【问题标题】:Why am I getting a 404 error when connecting to a specific webpage using Jsoup?为什么我在使用 Jsoup 连接到特定网页时收到 404 错误?
【发布时间】:2013-09-14 09:14:05
【问题描述】:

我正在尝试从 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 的网页。知道为什么吗?

【问题讨论】:

  • 我无法使用 Chrome 或httpie.复制此内容
  • 这里也一样。当我在浏览器中输入 URL 时,它工作正常。但是当我尝试使用 Jsoup 连接到它时,它给了我一个 404。

标签: java dom http-status-code-404 jsoup connect


【解决方案1】:

服务器返回 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 的页面。我有没有提到互联网上到处都是垃圾?

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

【讨论】:

  • 制作这个网站(或那个页面)的人是在开玩笑。
  • 我该如何解决这个问题? :(
  • 我刚刚发现以下页面也发生了这种情况:metacritic.com/game/pc/tropico --- 你能确认一下吗?
  • 是的(嗯,首先它提供了一个 301 重定向到 http://www.metacritic.com/game/pc/tropico,然后是 404)。我将更新我的解决方法。
【解决方案2】:

我意识到你的问题已经很晚了,但我今天遇到了这个问题,终于意识到 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

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

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 1970-01-01
    • 2016-03-28
    • 2015-04-12
    • 2012-06-16
    • 2020-04-12
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多