我正在尝试使用 PHP 和 cURL 发布到网站并获取搜索结果,作为抓取概念证明的一部分。但是响应与我直接访问该站点得到的响应不同。我已经使用 FireBug 捕获了所有发布参数和标头,并使用 cURL 发送所有这些参数,但响应仍然不一样。有人可以帮忙弄清楚我做错了什么吗?
我要访问的网站是:http ://book.goindigo.in/skylights/cgi-bin/skylights.cgi
在那个网站上,我正在做一个单程搜索,它将返回一堆航班(例如,9 月 25 日的孟买-德里)。我不担心这个结果。显示航班后,如果选择了特定航班,则会在“价格摘要”部分下方的左侧显示票价细分。为了获得这个价格摘要,他们正在触发一个 ajax 调用,这是我想使用 PHP 和 cURL 模拟的。
当通过站点访问时,ajax 调用会返回一堆 javascript 变量作为响应。但是当通过 cURL 访问时,相同的调用返回页面的完整 html 而不是预期的 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;