Использование сценария Ruby для входа на сайт через https - PullRequest
18 голосов
/ 14 ноября 2009

Хорошо, вот и дело: я работаю над приложением Ruby, которое будет брать данные с веб-сайта и объединять эти данные в файл XML.

Веб-сайт, с которого мне нужно получать данные, не имеет API-интерфейсов, которые я могу использовать, поэтому единственное, о чем я могу думать, - это войти на веб-сайт, последовательно загрузить страницы, на которых есть нужные мне данные (в этом случай, PM; я хочу заархивировать их), а затем проанализировать возвращенный HTML.

Однако проблема в том, что я не знаю ни одного способа программной симуляции сеанса входа в систему.

Будет ли у кого-нибудь совет или какие-либо проверенные методы, которые я мог бы использовать для успешного входа на страницу https, а затем программной загрузки страниц с сайта, используя временную сессию cookie из имени входа? Это не должно быть решение только для Ruby - я просто хочу знать, как я могу это сделать. И если это помогает, рассматриваемый веб-сайт использует службу паспорта Microsoft .NET в качестве механизма входа / сеанса.

Любые комментарии по этому вопросу приветствуются. Спасибо.

Ответы [ 3 ]

37 голосов
/ 14 ноября 2009

Mechanize

Mechanize - это библиотека ruby, которая имитирует поведение веб-браузера. Вы можете нажимать на ссылки, заполнять формы и отправлять их. Он даже имеет историю и помнит куки. Кажется, ваша проблема может быть легко решена с помощью механизации.

Следующий пример взят из http://mechanize.rubyforge.org:

require 'rubygems'
require 'mechanize'

a = Mechanize.new
a.get('http://rubyforge.org/') do |page|
  # Click the login link
  login_page = a.click(page.link_with(:text => /Log In/))

  # Submit the login form
  my_page = login_page.form_with(:action => '/account/login.php') do |f|
    f.form_loginname  = ARGV[0]
    f.form_pw         = ARGV[1]
  end.click_button

  my_page.links.each do |link|
    text = link.text.strip
    next unless text.length > 0
    puts text
  end
end
0 голосов
/ 14 ноября 2009

Что бы это ни стоило, вы можете проверить Вебрат . Он предназначен для использования в качестве инструмента для автоматических приемочных тестов, но я думаю, что вы могли бы использовать его для имитации заполнения полей входа в систему, затем переходить по ссылкам по их именам и получать необходимый HTML-код в виде строки. Не пытался делать что-то подобное, хотя.

0 голосов
/ 14 ноября 2009

Вы можете попробовать использовать wget для загрузки страницы. Вы можете проанализировать процесс входа в систему с этим приложением www.portswigger.net/proxy/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...