有一些网站,当我在浏览器上打开特定的ajax请求时,会得到结果页面,但是当我尝试使用curl加载它们时,我从服务器收到错误消息。
我如何正确模拟对将模拟浏览器的服务器的get请求?
那就是我在做什么:
$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选项。 服务器还会测试cookie吗?您可以使用CURLOPT_COOKIE,CURLOPT_COOKIEFILE和/或CURLOPT_COOKIEJAR处理。
编辑:由于请求使用https,因此在验证证书时也可能出错,请参见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);