una son que pagina malos los las google funcionan eliminan como chrome celular buenos ruby cookies mechanize

ruby - malos - que son los cookies de una pagina web



¿Cómo agregar manualmente una cookie al estado Mecanizar? (5)

Estas respuestas son antiguas, así que para actualizar esto, en estos días se parece más a esto:

cookie = Mechanize::Cookie.new :domain => ''.mydomain.com'', :name => name, :value => value, :path => ''/'', :expires => (Date.today + 1).to_s agent.cookie_jar << cookie

Estoy trabajando en Ruby, pero mi pregunta también es válida para otros idiomas.

Tengo una aplicación mecanizada. El servidor con el que estoy hablando establece una cookie usando JavaScript (en lugar de la cookie estándar establecida), por lo que Mechanize no captura la cookie. Necesito devolver esa cookie a la próxima solicitud GET.

La buena noticia es que ya conozco el valor de la cookie, pero no sé cómo decirle a Mechanize que la incluya en mi próxima solicitud GET.


Lo descubrí por extrapolación (y fuentes de lectura):

agent = Mechanize.new ... cookie = Mechanize::Cookie.new(key, value) cookie.domain = ".oddity.com" cookie.path = "/" agent.cookie_jar.add(cookie) ... page = agent.get("https://www.oddity.com/etc")

Parece hacer el trabajo muy bien.

actualizar

Como señala @Benjamin Manns, Mechanize ahora quiere una URL en el método de add . Aquí está la receta modificada, asumiendo que usted ha hecho un GET con el agente y que la última página visitada es el dominio de la cookie (guarda un URI.parse() ):

agent = Mechanize.new ... cookie = Mechanize::Cookie.new(key, value) cookie.domain = ".oddity.com" cookie.path = "/" agent.cookie_jar.add(agent.history.last.uri, cookie)


Quería agregar mi experiencia para pasar específicamente las cookies de Selenium a Mechanize:

Consigue las cookies de tu driver de selenio

sel_driver = Selenium::WebDriver.for :firefox sel_driver.navigate.to(''https://sample.com/javascript_login'') #login sel_cookies = sel_driver.manage.all_cookies

El valor para :expires de Selenium cookie es un objeto DateTime o en blanco.

Sin embargo, el valor para :expires cookie de Mechanize (a) debe ser una cadena y (b) no puede estar en blanco

sel_cookies.each do |c| if c[:expires].blank? c[:expires] = (DateTime.now + 10.years).to_s #arbitrary date in the future else c[:expires] = c[:expires].to_s end end

Ahora cree una instancia como Mecanizar cookies y colóquelas en el tarro de galletas

mech_agent = Mechanize.new sel_cookies.each { |c| agent.cookie_jar << Mechanize::Cookie.new(c) } mech_agent.get ''https://sample.com/html_pages''



response.to_hash.fetch("set-cookie").each do |c| agent.cookie_jar.parse c end

response aquí es una cosa nativa de Ruby stdlib, como Net :: HTTPOK.