w3mで406 Not Acceptableになるサイトが見られるようになった
Refactormycodeが見られないよー>< - http://rubikitch.com/に移転しました
結論から言うと、「受けつけるメディアタイプ(Accept:)」(~/.w3m/configではaccept_media)が
text/*, image/*, application/*, audio/*, video/*
と設定されていたから。いじっていないがいつのまにかそうなっていた。
そこを空欄にしたら
text/html, text/*;q=0.5, image/*, application/*, audio/*, video/*
になった。そうすると見られるようになった。謎だぁ…
ちなみに、原因究明に使ったスクリプトはこんなの。プロキシサーバーでヘッダを確認し、open-uriで確認し、ヘッダを設定する。このようにして再現できた。
require 'open-uri' header = { 'accept-language' => 'ja;q=1.0, en;q=0.5', 'accept' => 'text/*, image/*, application/*, audio/*, video/*', 'user-agent' => 'open-uri/ruby', 'accept-encoding' => 'none', 'host' => 'refactormycode.com', } open("http://refactormycode.com/codes/246-action-mailer", header) do |f| html = f.read html.length # => end # ~> /pkgs/ruby19/lib/ruby/1.9.0/open-uri.rb:340:in `open_http': 406 Not Acceptable (OpenURI::HTTPError) # ~> from /pkgs/ruby19/lib/ruby/1.9.0/open-uri.rb:761:in `buffer_open' # ~> from /pkgs/ruby19/lib/ruby/1.9.0/open-uri.rb:197:in `block in open_loop' # ~> from /pkgs/ruby19/lib/ruby/1.9.0/open-uri.rb:195:in `catch' # ~> from /pkgs/ruby19/lib/ruby/1.9.0/open-uri.rb:195:in `open_loop' # ~> from /pkgs/ruby19/lib/ruby/1.9.0/open-uri.rb:141:in `open_uri' # ~> from /pkgs/ruby19/lib/ruby/1.9.0/open-uri.rb:663:in `open' # ~> from /pkgs/ruby19/lib/ruby/1.9.0/open-uri.rb:33:in `open' # ~> from -:11:in `<main>'
で、acceptをコメントアウトするとうまくいった。
require 'open-uri' header = { 'accept-language' => 'ja;q=1.0, en;q=0.5', # 'accept' => 'text/*, image/*, application/*, audio/*, video/*', 'user-agent' => 'open-uri/ruby', 'accept-encoding' => 'none', 'host' => 'refactormycode.com', } open("http://refactormycode.com/codes/246-action-mailer", header) do |f| html = f.read html.length # => 24635 end
acceptを*/*にしても見られた。この設定が妥当なのかはまだよくわからない。