PHP的curl:我怎样才能模拟一个请求就像一个Web浏览器?
有网站,当我在浏览器上打开特定的Ajax请求我得到的结果页,但是当我尝试加载它们与curl,我收到来自服务器的错误。
我如何正确地模拟一个获取请求到模拟浏览器的服务器?
这就是我正在做的事情:
$url="https://new.aol.com/productsweb/subflows/ScreenNameFlow/AjaxSNAction.do?s=username&f=firstname&l=lastname"; ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); $result=curl_exec($ch); print $result;
你确定curl模块是否支持ini_set('user_agent',…)? 在http://docs.php.net/function.curl-setopt中有一个选项CURLOPT_USERAGENT。;
还可以有一个由服务器testing的cookie? 您可以使用CURLOPT_COOKIE,CURLOPT_COOKIEFILE和/或CURLOPT_COOKIEJAR进行处理。
编辑:由于请求使用https,validation证书时可能也有错误,请参阅CURLOPT_SSL_VERIFYPEER。
$url="https://new.aol.com/productsweb/subflows/ScreenNameFlow/AjaxSNAction.do?s=username&f=firstname&l=lastname"; $agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt($ch, CURLOPT_URL,$url); $result=curl_exec($ch); var_dump($result);