通过 phpQuery 模拟浏览器请求 - URL 重写修改了路径


Emulate Browser Request by phpQuery - URL Rewrite modified the path

我正在使用phpQuery来模拟浏览器请求。代码很简单,如下所示:

require_once('phpQuery/phpQuery.php');
phpQuery::browserGet($url, 'success1');
function success1($browser) {
    print $browser;
}

其中 URL 是 http://www.etk.cc/bmw/EN/parts/info/13547556118

但是,我收到了以下例外:

致命错误:未捕获的异常"Zend_Uri_Exception",并显示消息 'Path "/bmw/EN/parts/info/http://www.etk.cc/bmw/EN/parts/info/Throttle 包含 Assy/13547556118/" 不是有效的 HTTP 路径'

据信 URL 重写将 URL 更改为 http://www.etk.cc/bmw/EN/parts/info/Throttle housing Assy/13547556118/,但 phpQuery 或 Zend 库无法识别 URL 重写。

如何解决此问题(加载正确的 URL(?

注意:在URL重写后,我无法使用URL,因为URL包含产品名称并且没有模式。

这是我

的解决方案。

我首先使用以下代码来获取请求的标头

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_NOBODY, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 
$out = curl_exec($ch); 

Location:标题中,我可以知道重写的URL。然后,我再次使用该phpQuery,使用新获得的重写 URL 获取所需的信息。

脚注:我确实认为问题中的异常是phpQuery中的一个错误。