我们正在使用curl从第三方web服务器获取响应。有一个代码片段:
$url = "https://book.some-site.com/cgi-bin/booking-form.cgi";
$uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14";
$ch = curl_init( $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 0);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
一切都很好,直到我们在其中一个页面上遇到加载屏幕。我们从web服务器得到以下响应"…
我们正在处理您的请求…
您的搜索结果将很快显示。
",这是一个加载/等待屏幕。之后我们什么也得不到。在加载屏幕后在浏览器中工作时,将显示实际的响应。任何想法如何获得实际响应和绕过加载屏幕?通常,当一个网站有一个加载屏幕,然后显示结果,而不把你重定向到一个新的页面,这意味着他们通过Ajax加载结果。因此,HTML页面加载时只显示"嘿,正在加载"消息,然后运行一些JavaScript从另一个页面下载实际内容。你需要研究他们的JS代码,然后加载他们通过Ajax加载的页面。
你可以考虑在你的web浏览器的开发工具中启用"记录xmlhttprequest",以便更容易地找出他们通过Ajax加载的页面