php卷曲到没有验证码的网站

php卷曲到没有验证码的网站,php,curl,Php,Curl,请容忍我,因为我对php curl及其复杂性完全陌生。我在这里学到了一些技巧,但我仍然被困在这里(好几天),所以希望有人能真正帮助我 当我卷曲到此url时,使用web浏览器查看它与使用卷曲查看它之间有一个关键区别。i、 e.通过curl查看时,将显示验证码字段(以及错误消息)。通过浏览器查看时没有验证码或错误消息。如何使curl产生与浏览器相同的结果 下面是我的简单代码片段 $loginUrl = 'http://agentnet.propertyguru.com.sg/ex_login?w=1

请容忍我,因为我对php curl及其复杂性完全陌生。我在这里学到了一些技巧,但我仍然被困在这里(好几天),所以希望有人能真正帮助我

当我卷曲到此url时,使用web浏览器查看它与使用卷曲查看它之间有一个关键区别。i、 e.通过curl查看时,将显示验证码字段(以及错误消息)。通过浏览器查看时没有验证码或错误消息。如何使curl产生与浏览器相同的结果

下面是我的简单代码片段

$loginUrl = 'http://agentnet.propertyguru.com.sg/ex_login?w=1&redirect=/ex_home';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $loginUrl);
$cookie = realpath('cookie.txt');  // 'FSPrompt-6496=completed;' is stored in this file
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.0; rv:30.0) Gecko/20100101 Firefox/30.0');
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, TRUE);

$request_headers = array();
$request_headers[] = 'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
$request_headers[] = 'Accept-Language:en-US,en;q=0.5';
$request_headers[] = 'Connection: Keep-Alive';
curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
$msg = curl_exec($ch);

此站点需要cookie才能让您登录

  • 当您访问/ex_login(不带cookie)时,它会将您重定向到/distil_identification_cookie.html?uid=
  • 在/distil_identify_cookie.html?uid=…,浏览器必须保存cookie值,它会将您重定向回第一个登录页面
  • 在第一个登录页面上,您拥有有效的cookie,不再需要cookie init

  • 因此,必须更新脚本才能正确保存cookie。是构建http客户端的绝佳库。

    我确实看到了验证码箱,这正是问题所在。。。当使用网络浏览器(我使用IE9和Firefox 30.0)查看时,验证码不会出现。它会出现在Chrome 35、Firefox 30和IE 11中。我不知道为什么浏览器会显示验证码。如果我继续声明我的浏览器不显示验证码,而你重申你的浏览器不显示验证码,那就没有建设性了。你能建议我如何将cookie保存在/distil\u identification\u cookie.html吗?我一点也不知道该怎么做…再次为麻烦道歉!该死,我的php版本是5.3+但Guzzle需要5.4。应该先看看安装要求。。。还有其他方法吗?Guzzle 3.x不需要5.4(:我刚刚意识到我在前面的评论中可能不清楚。我保存cookie时遇到问题的原因是,即使在我设置curl_setopt($ch,CURLOPT_FOLLOWLOCATION,FALSE)时,页面也会重定向回第一个登录页面;我无法访问$\u GET['uid']因此,我非常感谢你的进一步帮助。顺便问一下,你是做自由职业的吗,安迪?