java - 为什么我看到的页面与维基百科不同?

标签 java html http web wikipedia

当我打开 http://en.wikipedia.org/wiki/Category:Births_by_year在任何浏览器中,我都会看到包含许多子类别和一个子页面的类别页面 http://en.wikipedia.org/wiki/Park_Sung-Baek

但是当我用 Java 读取同一个页面时,我得到的类别页面具有不同的内容。而不是上面提到的子页面,它包含 http://en.wikipedia.org/wiki/User:Mijotoba/Ruth_Stella_Correa_Palacio

怎么可能?为什么维基百科呈现不同的页面?

设置 User-Agent 没有帮助。

请求“正常”内容的 header

GET http://en.wikipedia.org/wiki/Category:Births_by_year HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: ru-RU,zh-CN;q=0.5
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: en.wikipedia.org

请求“修改”内容的 header

GET http://en.wikipedia.org/wiki/Category:Births_by_year HTTP/1.1
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Host: en.wikipedia.org
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive

最佳答案

是的,这看起来像是维基百科前端缓存的暂时性问题。具体来说,当我请求 the page in question从我的浏览器(发送请求 header Accept-Encoding: gzip, deflate),我看到的响应包含 header :

Last-Modified: Thu, 13 Sep 2012 16:46:55 GMT

如果我使用 LWP 请求相同的页面从命令行(不发送 Accept-Encoding header )来看, header 看起来非常不同:

Last-Modified: Sat, 25 Aug 2012 12:52:42 GMT

而且,实际上,后一个响应包含您报告的通过 Java 客户端收到的相同过时内容。

我怀疑发生的事情是,在过去的某个时候,服务器故障导致页面更改时未从缓存中清除过时的副本。在这种特殊情况下,您可能可以通过 purging the page 修复它.更一般地说,如果您以后继续看到此类陈旧的缓存页面,您可能需要将此问题报告给 Wikipedia server admins ,以防缓存出现问题需要修复。

附言。你为什么要用 Java 获取维基百科前端 HTML 页面?通常,您应该使用 MediaWiki API相反。

关于java - 为什么我看到的页面与维基百科不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12466351/

相关文章:

java - 使用 XML onClick 时出现 Android Dialog NoSuchMethodException 错误

java - HttpURLConnection 的性能问题

javascript - Jquery attr() - Mozilla 在设计方面表现不同(不同的字体系列或字体大小?)

http - 使用相同的处理程序处理 websockets 和 HTTP

c# - 如何从第二个 API 调用返回相同的状态代码

java - 如何在 App Engine 上使用适用于 Java 的 Google 客户端库创建 Google Cloud Storage 可恢复上传 URL?

java - 将测试类路径添加到 Cargo 运行的 Jetty

html - 如何使用 jdbc、servlets 和 html 将文件远程上传到 MySQL 数据库

html - 为什么我的父 Div 容器中的 2 个 Div 没有彼此对齐?

linux - 是否可以知道访问来自/etc/hosts等文件