PHP と cURL を使用してサイトに投稿し、スクレイピングの概念実証の一環として検索結果を取得しようとしています。しかし、サイトに直接アクセスして得た応答とは異なります。FireBug を使用してすべての投稿パラメーターとヘッダーをキャプチャし、cURL を使用してそれらすべてを送信していますが、それでも応答は同じではありません。誰かが私が間違っている可能性があることを理解するのを手伝ってもらえますか?
私がアクセスしようとしているサイトは次のとおりです。http://book.goindigo.in/skylights/cgi-bin/skylights.cgi
そのサイトでは、多数のフライトを返す一方向の検索を行っています (たとえば、9 月 25 日のボンベイ - デリー)。この結果については心配していません。フライトが表示されると、特定のフライトが選択されると、価格概要セクションの下の左側に運賃の内訳が表示されます。この価格の概要を取得するために、彼らは ajax 呼び出しを起動しています。これは、私が PHP と cURL を使用してシミュレートしたいものです。
サイトからアクセスすると、ajax 呼び出しは応答として多数の JavaScript 変数を返します。ただし、同じ呼び出しはページの完全な html を返しますが、cURL を介してアクセスした場合に予期される JavaScript 変数は返しません。
どんな助けでも大歓迎です。
ありがとう
$url='https://book.goindigo.in/skylights/cgi-bin/skylights.cgi';
$header = array("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language: en-us,en;q=0.5", "Connection: keep-alive", "Cache-Control: no-cache", "Accept-Encoding: gzip,deflate", "Content-Length: 342", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8", "Cookie: __utma=1.649498667.1346160326.1346395277.1346415046.4; __utmz=1.1346160326.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=1.11.10.1346415046; __utmc=1", "Host: book.goindigo.in", "Pragma: no-cache", "Referer: https://book.goindigo.in/skylights/cgi-bin/skylights.cgi");
$user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:15.0) Gecko/20100101 Firefox/15.0";
$referrer = 'https://book.goindigo.in/skylights/cgi-bin/skylights.cgi' ;
$post_params="page=INCLUSIVE_PRICING&module=SB&sid=&adults=1&children=0&language=EN&infants=0&numberMarkets=1&market1Data=201209036E%20146BLRDEL%20ININERE0BLRDEL201209031345201209031630Regular%20Fare%20ADULT%20ADT%2001&market2Data=&flt1_cnx1_date=&flt1_cnx2_date=&flt1_paxType1_fare=440000&flt1_paxType2_fare=&itin_type=Domestic";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
#curl_setopt($ch, CURLOPT_PROXY, $proxy);
#curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
$result = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
echo $result;