【发布时间】:2016-10-23 20:40:52
【问题描述】:
我们有一个使用 Guzzle 5 下载 Wordpress RSS 提要的 php 网络应用程序。
除了这个提要https://www.socialquant.net/blog/feed/之外一切正常
此网站的所有者确实希望我们拉取提要,而不是故意试图阻止访问。
我可以使用 wget 或 curl 从本地计算机和生产网络服务器(我们最初注意到问题的地方)成功下载文件,没有特殊选项。
这在之前发生过一次,当时我们认为该问题是由 Apache 上的 mod_security 引起的,并通过添加任意 User-Agent 标头来解决。但是那一次我能够在命令行上一致地重现这个问题,这次它只是通过 Guzzle/PHP 失败了
我已将浏览器请求中的响应标头复制到问题提要和另一个正常工作的提要中。我划掉了那些相同的,剩下的是下面的
Server:Apache/2.2.22
Vary:User-Agent
X-Powered-By:PHP/5.3.29
Content-Encoding:gzip
Server:Apache
Vary:Accept-Encoding
X-Powered-By:PHP/5.5.30
这并没有提供太多洞察力。 gzip 内容编码跳出,我正在尝试使用 gzip 找到另一个工作提要来验证这一点,但这并不重要,因为 Guzzle 的默认模式是自动处理编码。我们使用相同的设置从使用 gzip 的 CDN 下载图像。
请问有人有什么想法吗?谢谢:)
编辑
使用 Guzzle 5.3.0
代码:
$client = new \GuzzleHttp\Client();
try {
$res = $client->get( $feed, [
'headers' => ['User-Agent' => 'Mozilla/4.0']
] );
} catch (\Exception $e) {
}
【问题讨论】:
-
您能否展示 Guzzle 部分的代码以及您正在使用的 Guzzle 5 的精确版本?
-
刚刚编辑了帖子,谢谢:)