1

任意のブラウザでhttp://en.wikipedia.org/wiki/Category:Births_by_yearを開くと、多くのサブカテゴリと1つのサブページがあるカテゴリページが表示されます。これは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
4

1 に答える 1

2

はい、ウィキペディアのフロントエンドキャッシュに関する一時的な問題のようです。具体的には、ブラウザ(リクエストヘッダーを送信する)から問題のページAccept-Encoding: gzip, deflateをリクエストすると、表示される応答にヘッダーが含まれます。

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

コマンドライン(ヘッダーを送信しない)からLWPを使用して同じページを要求するとAccept-Encoding、ヘッダーは大きく異なります。

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

実際、この後者の応答には、Javaクライアントで受信したと報告したものと同じ古いコンテンツが含まれています。

過去のある時点で、サーバーの不具合により、ページが変更されたときに古いコピーがキャッシュから削除されなかったことが起こったのではないかと思います。この特定の例では、おそらくページを削除することで修正できます。より一般的には、このような古いキャッシュページが今後も表示される場合は、修正が必要なキャッシュに問題がある場合に備えて、問題をWikipediaサーバー管理者に報告することをお勧めします。

追伸 とにかくJavaでウィキペディアのフロントエンドHTMLページをフェッチするのはなぜですか?通常、代わりにMediaWikiAPIを使用する必要があります。

于 2012-09-17T20:45:02.180 に答える