如何使用 PHP cURL 检索验证码并保存会话?

Posted

技术标签:

【中文标题】如何使用 PHP cURL 检索验证码并保存会话?【英文标题】:How to retrieve captcha and save session with PHP cURL? 【发布时间】:2010-03-27 01:00:29 【问题描述】:

更新:已解决

大家好,我知道了,只需保存 cookie 到临时文件,并重新提交表格 卷曲并使用先前设置 cookie 临时文件 :) 感谢大家的回复 :)

这是我的工作代码

$ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url_register);  
        curl_setopt($ch, CURLOPT_USERAGENT, $this->useragent);
        curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookie); 
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);    
        $out['result']  = curl_exec($ch); 
        $out['error']   = curl_error($ch);
        $out['info']    = curl_getinfo($ch);
        curl_close($ch);

对于下一个 curl,只需像这样使用 CURLOPT_COOKIEFILE

/* fetch captcha url with existed cookie */
            $ch = curl_init($captcha_url);
            curl_setopt($ch, CURLOPT_USERAGENT, $this->useragent);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
            curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie); 
            curl_setopt($ch, CURLOPT_FILE, $fp); 
            $out2['result'] = curl_exec($ch);
            $out2['error']  = curl_error($ch);
            $out2['info']   = curl_getinfo($ch);
            curl_close($ch);

大家好,

我正在创建一些脚本来通过 php curl 提交内容。首先获取会话和验证码,用户必须提交验证码才能最终提交。

问题是我无法获取验证码,我已尝试使用此代码和 preg_match 获取图像标签并返回它

    $ch = curl_init();

 curl_setopt($ch, CURLOPT_URL,$url);  
 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2');
 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_setopt($ch, CURLOPT_COOKIE, 1);
 curl_setopt($ch, CURLOPT_COOKIEJAR, "1");
 curl_setopt($ch, CURLOPT_COOKIEFILE, "1");
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);    
    $result = curl_exec($ch);  
    curl_close($ch);

但运气不好,我要提交的页面是http://abadijayaiklan.co.cc/pasang-iklan/。

希望有人能帮帮我:)

感谢和问候

【问题讨论】:

验证码的目的不是阻止您尝试的操作吗? 如果您找到了解决方案 - 只需发布您在 cmets 中发布的答案并接受它,这样这个问题就不会再显示为未回答了 Ferri 你能在核心 php 中分享什么将代替 $this->cookie 和 $this->useragent 以及 curl 的步骤究竟是什么,因为这两个 curl 刚刚混淆了,我需要知道我们是否需要先获取页面然后获取验证码或获取验证码以及页面 【参考方案1】:

来自curl_setoptCURLOPT_COOKIEFILECURLOPT_COOKIEJAR 的php 手册页都应该指定一个文件名。您将它们设置为“1”(这可能是有效的,但这是您想要的吗?)

【讨论】:

大家好,我知道了,只需将 cookie 保存到临时文件中,然后使用 curl 重新提交表单并使用以前的临时文件设置 cookie :) 感谢大家的回复 :)

以上是关于如何使用 PHP cURL 检索验证码并保存会话?的主要内容,如果未能解决你的问题,请参考以下文章

使用CURL发出多个请求时无法保存会话

CURL 如何使用验证码和会话登录

PHP cURL - 具有基本身份验证的HTTP GET 403

使用 cURL 和安全页面上的当前会话和 cookie 数据检索网站 HTML 页面

使用访问令牌时,salesforce rest api 无效会话 id 错误

使用 PHP Curl 发布数据并检索响应?