ブラウザで特定のajaxリクエストを開くと結果のページが表示されますが、curlでロードしようとすると、サーバーからエラーが表示されるWebサイトがあります。
ブラウザーをシミュレートするサーバーへの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);