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

回到顶部