为啥我看到来自 Wikipedia 的不同页面?
Posted
技术标签:
【中文标题】为啥我看到来自 Wikipedia 的不同页面?【英文标题】:Why am I see different pages from Wikipedia?为什么我看到来自 Wikipedia 的不同页面? 【发布时间】:2012-09-10 02:06:38 【问题描述】:当我在任何浏览器中打开 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
没有帮助。
请求“正常”内容的标头
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
请求“修改”内容的标头
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
【问题讨论】:
我在此处看到“en.wikipedia.org/wiki/User:Mijotoba/Ruth_Stella_Correa_Palacio”,尝试使用 Ctrl+F5 重新加载浏览器缓存。 这不是浏览器缓存,因为我在 Fiddler2 中看到了内容。 Ctrl+F5 没有帮助。我在所有浏览器(IE、FF、GC)中都看到了第一个版本 同样,OSX 10.8 + Chrome / Safari --> Ruth Stella Correa Palacio。 Chrome 开发者在这里。你在世界的哪个地区?你确定它正在访问 en.wikipedia.org? 据我所知,这是Accept-Encoding: gzip, deflate
行。也许服务器上有一个 gzipped 缓存版本?
【参考方案1】:
是的,这似乎是 Wikipedia 前端缓存的临时问题。具体来说,当我从浏览器(发送请求标头Accept-Encoding: gzip, deflate
)请求the page in question 时,我看到的响应包含标头:
Last-Modified: Thu, 13 Sep 2012 16:46:55 GMT
如果我从命令行使用LWP 请求同一页面(不发送Accept-Encoding
标头),标头看起来非常不同:
Last-Modified: Sat, 25 Aug 2012 12:52:42 GMT
事实上,后一个响应包含与您报告通过 Java 客户端接收到的相同的过时内容。
我怀疑发生的事情是,在过去的某个时候,服务器故障导致页面更改时过期的副本没有从缓存中清除。在这种特殊情况下,您可能可以通过purging the page 修复它。更一般地说,如果您以后继续看到此类陈旧的缓存页面出现,您可能需要将问题报告给Wikipedia server admins,以防缓存出现问题需要修复。
附言。你为什么要使用 Java 获取 Wikipedia 前端 HTML 页面?通常,您应该改用MediaWiki API。
【讨论】:
以上是关于为啥我看到来自 Wikipedia 的不同页面?的主要内容,如果未能解决你的问题,请参考以下文章
基本 CRC32 Wikipedia 实现不同于在线看到的标准 CRC32