php curl到没有验证码的网站

时间:2014-06-29 15:03:51

标签: php curl

请耐心等待我,因为我对php curl及其错综复杂的全新。我已经在这里找到了一些提示,但仍然卡住了(好几天),所以希望有人能真正帮忙!

当我卷曲到此网址http://agentnet.propertyguru.com.sg/ex_login?w=1&redirect=/ex_home时,使用我的网络浏览器与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);

1 个答案:

答案 0 :(得分:1)

此网站需要Cookie才能让您登录。<​​/ p>

  1. 当您访问/ ex_login(没有cookie)时,会将您重定向到/distil_identify_cookie.html?uid =
  2. 在/distil_identify_cookie.html?uid=...,浏览器必须保存cookie值,它会将您重定向回第一个登录页面。
  3. 在第一个登录页面上,您拥有有效的cookie,不再需要cookie init。
  4. 因此,您必须更新脚本才能正确保存Cookie。 Guzzle是构建http客户端的绝佳库。