首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过cURL获取RSS,在浏览器中很好,但终端中有404错误。

通过cURL获取RSS,在浏览器中很好,但终端中有404错误。
EN

Stack Overflow用户
提问于 2014-03-04 00:22:09
回答 2查看 2K关注 0票数 3

客户端希望我们通过instead交付内容,他们使用cURL来获取提要内容,但是他们说他们得到了一个404错误。我已经在终端中尝试了以下命令:$ curl -g --compressed http://mediosymedia.com/wp-content/plugins/nextgen-gallery/xml/media-rss.php > temp.xml,正如客户端所说,我得到的是404页,而不是提要。当我在浏览器中输入URI时,它会显示提要,没有问题。

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

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-04 08:15:56

实际上,curl返回一个404状态页:

代码语言:javascript
复制
$ 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 

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

代码语言:javascript
复制
$ 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的。

票数 2
EN

Stack Overflow用户

发布于 2014-03-04 00:32:35

我最初的想法是,这可能与cookie有关(请参阅this question),但这可能是一个本地化问题。我的机器运转得很好:

代码语言:javascript
复制
[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

更正:

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

代码语言:javascript
复制
# 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

我只想删除我的答案,但这值得留待其他可能正经历这个问题的人--确保您验证了响应!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22160399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档