我正在用 PHP 编写一段代码,该代码从大约 20 个网站中获取特定格式的内容。
除一个网站外,所有网站均正常工作。现在,问题来了。
我正在使用 file_get_contents()
从网站获取图像并将其保存在我的服务器上。该图像存在于远程服务器上,可以通过浏览器访问,但我在通过代码执行此操作时收到 404 响应。
我无法理解这背后的问题,因为此方法非常适合其他网站。
这与发送的 header 有关吗?任何帮助将不胜感激。
最佳答案
答案可能是:是的...
我想他们正在检查用户代理。
这些内容会在您的 header 中发送。您可以伪造您的用户代理。但不要使用 file_get_contents()
,因为该函数不允许伪造您的用户代理。
查看curl .
编辑 1
Barmar 的链接显示了同时使用 file_get_contents()
与不同用户代理的可能性。值得研究一下...
编辑2
但也可能是关于检查引荐来源网址...如果是这种情况,您确实需要使用curl
才能设置引荐来源网址。
编辑3
现在看到 URL,并查看您收到的错误 404
(不是 50x
),我建议您检查 URL 是否被转义和解析好的。我看到 URL 包含空格,域名后面有两个斜杠。检查空格是否转义为 %20,以及双斜杠是否不应被剥离为只有一个斜杠。
所以
http://celebslam.celebuzz.com//bfm_gallery/2014/03/Lindsay Lohan 2 Broke Girls/gallery_enlarged/gallery_enlarged-lindsay-lohan-2-broke-girls-01.jpg
应该变成
http://celebslam.celebuzz.com/bfm_gallery/2014/03/Lindsay%20Lohan%202%20Broke%20Girls/gallery_enlarged/gallery_enlarged-lindsay-lohan-2-broke-girls-01.jpg
请注意,服务器是 Case-SeNsItIvE!
关于php - file_get_contents() 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22336757/