通过cURL获取RSS,浏览器正常但终端中有404错误

时间:2014-03-04 00:22:10

标签: php xml wordpress curl rss

客户希望我们通过RSS Feed传送内容,他们使用cURL获取Feed内容,但他们说他们会收到404错误。我在终端中尝试了这个命令:$ curl -g --compressed http://mediosymedia.com/wp-content/plugins/nextgen-gallery/xml/media-rss.php > temp.xml并且客户端说我得到404页面而不是feed。当我在浏览器中输入URI时,它显示了Feed没有问题。

我无法更改客户端应用中的任何内容,因此,如何确保他们获取Feed而不是404错误?

谢谢!

2 个答案:

答案 0 :(得分:1)

确实,curl会返回404状态页面:

$ curl -g --compressed http://mediosymedia.com/wp-content/plugins/nextgen-gallery/xml/media-rss.php -s -o /dev/null -D-
HTTP/1.1 **404 Not Found**
Date: Tue, 04 Mar 2014 08:12:27 GMT
Server: Apache
X-Pingback: http://mediosymedia.com/xmlrpc.php
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8 

许多网络服务器会怀疑没有浏览器User-Agent的请求,因为他们希望curl用于抓取。这可能不是最聪明的技术,因为简单的UserAgent欺骗会解决这个问题:

$ curl -g --compressed http://mediosymedia.com/wp-content/plugins/nextgen-gallery/xml/media-rss.php -s -o /dev/null -D- -H'User-Agent:  Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:27.0) Gecko/20100101 Firefox/27.0'
HTTP/1.1 **200 OK**
Date: Tue, 04 Mar 2014 08:13:46 GMT
Server: Apache
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: text/xml;charset=utf-8

因此,在实践中,请确保为不是Curl的请求设置User-Agent。

答案 1 :(得分:0)

我最初的原因是这可能与cookie有关(见this question),但这可能是一个本地化的问题。我的机器工作正常:

[root@devtest tmp]# curl -g --compressed http://mediosymedia.com/wp-content/plug
ins/nextgen-gallery/xml/media-rss.php > temp.xml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 27926    0 27926    0     0  54564      0 --:--:-- --:--:-- --:--:-- 69815

CORRECTION:

感谢Julien指出下载文件的内容是自定义404页面内容。正如他所提到的,您需要在-A个请求中添加一个useragent标记(curl):

# curl -A "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1
; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12"-g --compressed http://medio
symedia.com/wp-content/plugins/nextgen-gallery/xml/media-rss.php > temp.xml

我会删除我的答案,但是值得留下来作为对可能遇到此问题的其他人的警告 - 确保您验证回复!