2

我正在尝试从 Metacritic 获取一些视频游戏数据,但我不断在此网页上收到 404 错误:

http://www.metacritic.com/game/playstation-2/ico

连接命令非常基本:

Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36").timeout(0).get();

在我尝试连接的 Metacritic 上数百个类似的视频游戏网页中,这是唯一一个每次都返回 404 的网页。知道为什么吗?

4

2 回答 2

7

服务器返回 404。

$ curl -I http://www.metacritic.com/game/playstation-2/ico
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=UTF-8
Server: Apache
X-Varnish: 868026494
Date: Tue, 10 Sep 2013 15:26:21 GMT
Connection: keep-alive

它还返回非 404 外观的内容这一事实不会影响 Jsoup;它只是查看服务器在 HTTP 标头中提供的代码。

欢迎来到疯狂的“什么是如何工作的?!” 互联网世界。:) 有趣的是,curl -I http://www.metacritic.com/game/playstation-2/SDKFJSDF返回一个 HTTP 标头代码,200 OK但显示一个内容为 404 的页面。我是否提到互联网充满了废话?

您可以通过调用对象ignoreHttpErrors(true)来忽略这些错误。Connection.Request

于 2013-09-10T15:28:32.183 回答
0

我意识到你的问题已经很晚了,但我今天遇到了这个问题,终于意识到 Metacritic 搞砸了。看起来他们有一个 apache 配置,可以在请求 *ico 文件(或大多数图像)时提供 404 错误。他们可能有这样的设置:

RewriteRule (js|ico|gif|jpg|png|css|xml)$ - [R=404,L,NC]]

他们错过了这些延期之前的一段时间。因此,以这些词结尾的任何内容,即使它们是游戏名称的一部分,也会返回带有内容的 404。证明:

$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/foojpg'
HTTP/1.1 404 Not Found

$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/foojpgz'
HTTP/1.1 200 OK

$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/fooxml'
HTTP/1.1 404 Not Found

$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/foocss'
HTTP/1.1 404 Not Found

$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/foojs'
HTTP/1.1 404 Not Found

$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/fooico'
HTTP/1.1 404 Not Found

$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/fooicoo'
HTTP/1.1 200 OK

我觉得这很有趣:) 无论如何,谜团解开了。

于 2014-07-04T04:28:00.260 回答