php curl:如何完全像Web浏览器一样模拟get请求?
有一些网站,当我在浏览器上打开特定的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);
以上是 php curl:如何完全像Web浏览器一样模拟get请求? 的全部内容, 来源链接: utcz.com/qa/426327.html