WWW::Mechanize::ResponseCodeError: 403 => Net::HTTPForbidden
Die obige Fehlermeldung passierte meine Konsole, als ich versuchte mit dem folgenden Code, eine Seite von Wikipedia abzurufen:
require 'meachnize'
agent = WWW::Mechanize.new
response = agent.get("http://en.wikipedia.org/wiki/Computer")
WWW::Mechanize::ResponseCodeError: 403 => Net::HTTPForbidden
from /usr/lib/ruby/1.8/net/http.rb:1049:in `request'
from /usr/lib/ruby/1.8/net/http.rb:2104:in `reading_body'
from /usr/lib/ruby/1.8/net/http.rb:1048:in `request'
from /usr/lib/ruby/gems/1.8/gems/mechanize-0.6.5/lib/mechanize.rb:396:in `fetch_page'
from /usr/lib/ruby/1.8/net/http.rb:545:in `start'
from /usr/lib/ruby/gems/1.8/gems/mechanize-0.6.5/lib/mechanize.rb:390:in `fetch_page'
from /usr/lib/ruby/gems/1.8/gems/mechanize-0.6.5/lib/mechanize.rb:160:in `get'
from (irb):45
from :0
Nach dem ich überprüft hatte, ob es sich zufälliger Weise um ein Serverproblem handeln könnte, bin ich dann doch in vertretbarer Zeit auf die Lösung des Problems gekommen: Der Server überprüft tatsächlich den USER-AGENT und lässt nur die ihm bekannten auf den Content zugreifen.
Das Problem war schnell gelöst, indem der Agent vor der get-Anweisung:
agent.user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1" dementsprechend verändert wurde.
Nur bleibt die Frage: WARUM? Ich habe recherchiert, das viele Serverbetreiber so verfahren, nur sehe ich den Sinn darin nicht. Mit Sicherheit kann es nichts zu tun haben, da dies nun wirklich keine Hürde ist.
Leave a Reply
You must be logged in to post a comment.