使用Ruby脚本通过https登录网站

Bap*_*iee 19 ruby scripting https login

好吧,所以这里是故事:我正在开发一个Ruby应用程序,它将从网站获取数据,并将这些数据聚合成XML文件.

我需要从中获取数据的网站没有我可以使用的任何API,所以我唯一能想到的是登录网站,依次加载有我需要的数据的页面(在这种情况下,PMs) ;我想存档它们,然后解析返回的HTML.

但问题是,我不知道以编程方式模拟登录会话的任何方法.

是否有人有任何建议,或知道我可以用来成功登录到https页面的任何经过验证的方法,然后使用登录中的临时cookie会话以编程方式从网站加载页面?它不一定是一个只有Ruby的解决方案 - 我只想知道我是如何实现这一点的.如果有帮助,有问题的网站是使用Microsoft的.NET Passport服务作为其登录/会话机制的网站.

有关此事的任何意见都是受欢迎的.谢谢.

joh*_*nes 38

机械化

Mechanize是ruby库,它模仿Web浏览器的行为.您可以单击链接,填写表单并提交.它甚至有历史和记忆饼干.看来你的问题可以在机械化的帮助下轻松解决.

以下示例来自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
Run Code Online (Sandbox Code Playgroud)