2 votes

Comment puis-je sauvegarder les cookies lorsque je demande une nouvelle page dans une session ?

J'ai ce code, et je me connecte avec succès :

require 'mechanize'
require 'logger'
agent = Mechanize.new{|a| a.log = Logger.new(STDERR) }
agent.read_timeout = 60
def add_cookie(agent, uri, cookie)
  uri = URI.parse(uri)
  Mechanize::Cookie.parse(uri, cookie) do |cookie|
    agent.cookie_jar.add(uri, cookie)
  end
end
page = agent.get "http://www.webpage.com"
form = page.forms.first
form.correo_ingresar = "user"
form.password = "password"
page = agent.submit form
myarray = page.body.scan(/SetCookie\(\"(.+)\", \"(.+)\"\)/)

Après m'être connecté, je ne suis pas redirigé, j'ai donc regardé la page web et c'est Java qui me redirige, mais si j'utilise la fonction page = agent.get("http://webpage.com") tous les cookies de session sont supprimés. Et je dois me reconnecter, et c'est un cycle parce que je n'arrive pas à le dépasser. J'ai déjà essayé plusieurs recommandations comme ignore_discard

3voto

pguardiario Points 19925

Il semble que vous ayez le bon code pour ajouter le cookie mais que vous ayez oublié de l'appeler. Essayez à la fin :

myarray.each{|line| add_cookie agent, 'http://www.sistemasaplicados.com.mx', "#{line[0]}=#{line[1]}"}

1voto

Phrogz Points 112337

Mechanize reçoit, stocke et envoie automatiquement des cookies lorsqu'il utilise la même instance pour obtenir de nouvelles pages.

  1. Êtes-vous certain que le site envoie effectivement des cookies ?
  2. Avez-vous confirmé que Mechanize n'envoie vraiment pas les cookies (avez-vous inspecté les en-têtes de demande qu'il envoie ?) ?
  3. Vous avez dit "Java est [...] en train de me rediriger" ; vouliez-vous vraiment dire JavaScript ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X