ruby http redirect mechanize

Detecta redirigir con ruby ​​mecanize



http redirect (2)

Encontré una manera de permitir redirecciones y también obtener el código de estado, pero no estoy seguro de que sea el mejor método.

agent = Mechanize.new # deactivate redirects first agent.redirect_ok = false status_code = ''200'' error_occurred = false # request url begin page = agent.get(url) status_code = page.code rescue Mechanize::ResponseCodeError => ex status_code = ex.response_code error_occurred = true end if !error_occurred && status_code != ''200'' then # enable redirects and request the page again agent.redirect_ok = true page = agent.get(url) end

Estoy usando las gemas mechanize / nokogiri para analizar algunas páginas al azar. Estoy teniendo problemas con los redireccionamientos 301/302. Aquí hay un fragmento del código:

agent = Mechanize.new page = agent.get(''http://example.com/page1'')

El servidor de prueba en mydomain.com redirigirá la página1 a la página2 con el código de estado 301/302, por lo tanto, esperaba tener

page.code == "301"

En cambio, siempre obtengo page.code == "200" .

Mis requisitos son:

  • Quiero que se sigan los redireccionamientos (comportamiento de mecanizado predeterminado, que es bueno)
  • Quiero ser capaz de detectar que esa página fue en realidad redirigida

Sé que puedo ver la página 1 en agent.history , pero eso no es confiable. Quiero el código de estado de redireccionamiento también.

¿Cómo puedo lograr este comportamiento con mechanize?


Puede dejar el redireccionamiento y simplemente seguir el encabezado de la ubicación:

agent.redirect_ok = false page = agent.get ''http://www.google.com'' status_code = page.code while page.code[/30[12]/] page = agent.get page.header[''location''] end