Php 有验证码的网页?
我试图卷曲一个网页,其中有验证码,然后我得到的图像,并显示给用户,然后提交,但我得到了会话过期错误。甚至没有不正确的验证码错误Php 有验证码的网页?,php,session,curl,cookies,captcha,Php,Session,Curl,Cookies,Captcha,我试图卷曲一个网页,其中有验证码,然后我得到的图像,并显示给用户,然后提交,但我得到了会话过期错误。甚至没有不正确的验证码错误 $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0"); curl_setopt($ch, CURLOPT_URL, $url)
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $result, $matches);
$cookies = array();
foreach($matches[1] as $item) {
parse_str($item, $cookie);
$cookies = array_merge($cookies, $cookie);
}
如果提交了代码
if(isset($_POST['submit'])) {
curl_setopt($ch, CURLOPT_URL, $url1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postinfo);
foreach($cookies as $key => $val) {
curl_setopt($ch, CURLOPT_COOKIE, $key.'='.$cookie);
}
我正在尝试internet上的几乎所有功能,但我无法管理任何功能。在foreach$cookies循环中,每次后续调用都将覆盖您在上一次迭代中设置的cookie,因此最终您将发送一个cookie值。curl可以为您处理cookies,所以最好让它来处理。实际上只有一个cookie url FALSE/FALSE 0 phpSess_RANDOM RANDOM 2很难看到发生了什么,因为代码不完整。在第二个示例中,
$cookies
来自哪里?除非您将它们存储在某个地方,否则这可能是一个与第一个请求不同的cookie。与其尝试自己做cookie,不如使用CURLOPT_-COOKIEFILE
和CURLOPT_-COOKIEJAR
选项,以便curl
自动完成。这也会导致会话过期