Как сохранить куки, когда я запрашиваю новую страницу за один сеанс? - PullRequest
2 голосов
/ 26 октября 2011

У меня есть этот код, и я успешно вхожу в систему:

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\(\"(.+)\", \"(.+)\"\)/)

После входа в систему я не перенаправляюсь, поэтому я посмотрел на веб-страницу, и Java перенаправляет меня, но если я использую page = agent.get("http://webpage.com") все сеансовые куки удалены.И я должен снова войти в систему, и это цикл, потому что я не могу пройти мимо.Я уже попробовал несколько рекомендаций, таких как ignore_discard

Ответы [ 2 ]

3 голосов
/ 04 ноября 2011

Похоже, у вас есть правильный код для добавления куки, но вы забыли его вызвать.В конце попробуйте:

myarray.each{|line| add_cookie agent, 'http://www.sistemasaplicados.com.mx', "#{line[0]}=#{line[1]}"}
1 голос
/ 26 октября 2011

Механизация автоматически получает, сохраняет и отправляет файлы cookie при использовании того же экземпляра для получения новых страниц.

  1. Вы уверены, что сайт действительно отправляет файлы cookie?
  2. Есть ли у васподтвердил, что Mechanize действительно не отправляет куки?(Вы проверяли заголовки запросов, которые он отправляет?)
  3. Вы сказали, что «Java [...] перенаправляет меня»;Вы действительно имели в виду JavaScript?
...