PHP - cURL有这样的网站?

时间:2011-12-04 15:10:51

标签: php curl

网站https://www.openbux.com/仅在一天或一个会话后过期。

有没有办法使用PHP cURL来登录并更改Cookie过期日期,例如一年?

我在使用CAPTCHA的cURL时遇到问题。对此有什么解决方案吗?

我知道我应该使用类似的东西

<?
    $cookie_file_path = "C:\path\to\save\cookie.txt";

    $agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/6";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,"http://www.example.com/target.php");
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
    curl_setopt($ch, CURLOPT_REFERER, "http://www.google.com");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    //Do not print anything now.
    //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "login_username=XXXXX&passWord=YYYYY");

    $html = curl_exec($ch);
    var_dump(urlencode($html));

    curl_close();
?>

但是我不能在CAPTCHA中使用它...而且我没有目标URL来发送日期 因为我从这里获得的登录表单https://www.openbux.com/login 像这样

<form action="" method="post">
    <input type="hidden" name="token" value="23cc81bca35588e5356bf07a1bb4e04538304e41" />
    <fieldset><h1>Please log in<a href="javascript:void(0);" onclick="showK();" title="Show keyboard"><img src="images/keyboard.png" style="float: right; margin-right: 12px; margin-top: 4px;" alt="Show keyboard" border="0"></a></h1>
    <div class="formular">
        <span class="formular_top"></span>
        <div class="formular_inner"> <span><a href="reset" class="lost">Lost Password?</a></span>
            <label> <strong>Username:</strong><span class="input_wrapper"> <input name="login_username" id="login_username" type="text" onfocus="text=this" value="" /> </span> </label>
            <label> <strong>Password:</strong> <span class="input_wrapper"> <input name="login_password" id="pwd" onfocus="text=this" type="password" /> </span> </label>
            <label> <strong>Verification Code:</strong> <span class="input_wrapper" style="width: 49px; float: right; margin-left: 8px; background: url(images/login/input_small.gif) no-repeat;"> <input name="code" type="text" maxlength="4" onfocus="text=this" style="text-transform: uppercase;" /> </span>
            <img src="captcha.jpg" height="22" alt="captcha" style="float: right;" /> </label>
            <input type="hidden" name="7" value="Israel" />
            <ul class="form_menu"><li><span class="button"><span><span><em>SUBMIT</em></span></span>
            <input type="submit" name="Login2" value="Login" />

所以我在action=""的任何网址中都没有。是否有可能允许我使用我的长日期cookie文件自动登录的任何PHP cURL脚本?

2 个答案:

答案 0 :(得分:2)

您可以在创建cookiejar文件后手动编辑它。您也可以使用Firefox之类的浏览器登录,然后将cookie数据从浏览器cookie窗口复制到cookiejar文件。您必须将其转换为正确的格式。

关于验证码,发送一个captcha.jpg请求,然后将其写入文件或输出到浏览器,解决它,然后将答案添加到CURLOPT_POSTFIELDS。

答案 1 :(得分:0)

我知道你想要一个可编程的答案,但一般来说,如果一个站点使用验证码,这是一个好兆头,它们实际上并不希望你自动登录并检索在你的网站上使用的信息。

但是,如果您有合理的理由这样做,最简单(并且无疑更安全)的方式是联系其他网站的运营商并询问他们是否有用于远程登录的API或者可以使用其他方式您需要提供所需的数据。

我的两分钱。