我想发布到使用PHP和cURL的网站,并获得搜索结果作为刮概念证明的一部分。但是,我的回应与我通过直接访问该网站所获得的回应并不相同。我已经使用FireBug捕获了所有的post参数和头文件,并使用cURL发送了所有这些参数和头文件,但响应仍然不相同。有人能帮助解决我可能做错了什么吗?PHP + 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;
也许API检查Referer。 – Barmar
我试过通过referer,没有工作。我基本上复制了原始请求使用站点页面发送的整套标题和发布参数。 – Ramesh
我刚刚使用Chrome开发人员工具捕获了帖子参数,并使用curl从命令行发送了它们,并获得了预期的javascript变量。你能发布你的PHP代码吗? – Barmar