Использование Ruby script для входа на сайт через https
Хорошо, так вот сделка: я работаю над Ruby-приложением, которое возьмет данные с веб-сайта и объединит эти данные в XML файл.
Веб-сайт, на котором я должен брать данные, не имеет каких-либо API-интерфейсов, которые я могу использовать, поэтому единственное, что я могу придумать, это войти на сайт, последовательно загружать страницы, на которых есть нужные мне данные (в этом case, PMs, я хочу их архивировать), а затем проанализировать возвращенный HTML.
Проблема заключается в том, что я не знаю, как можно программно моделировать сеанс входа в систему.
У кого-нибудь есть какие-либо советы или какие-либо проверенные методы, которые я мог бы использовать для успешного входа на страницу https, а затем программную загрузку страниц с сайта с использованием временного сеанса cookie из входа? Это не должно быть единственным решением Ruby - я просто хочу знать, как я могу это сделать. И если это помогает, рассматриваемый веб-сайт - это тот, который использует службу Microsoft.NET Passport в качестве механизма входа/сессии.
Любые материалы по этому вопросу приветствуются. Спасибо.
Ответы
Ответ 1
Mechanize
Механизация - это рубиновая библиотека, которая имитирует поведение веб-браузера. Вы можете щелкнуть ссылки, заполнить формы и отправить их. У него даже есть куча истории и воспоминаний. Кажется, ваша проблема может быть легко решена с помощью механизации.
Следующий пример взят из 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
Ответ 2
Вы можете попробовать использовать wget для извлечения страницы. Вы можете проанализировать процесс входа в систему с помощью этого приложения. Www.portswigger.net/proxy/.
Ответ 3
Для чего это стоит, вы можете проверить Webrat. Он предназначен для использования инструмента для автоматических приемочных испытаний, но я думаю, вы могли бы использовать его для имитации заполнения полей входа в систему, затем щелчка по ссылкам по их именам и захват необходимого HTML в виде строки. Не пробовал делать что-нибудь подобное, тo.