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

时间:2009-11-14 09:46:26

标签: ruby scripting login https

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

我需要从中获取数据的网站没有我可以使用的任何API,因此我唯一能想到的是登录网站,按顺序加载包含我需要的数据的页面(在此case,PMs;我想归档它们),然后解析返回的HTML。

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

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

欢迎任何有关此事的意见。感谢。

3 个答案:

答案 0 :(得分:37)

机械化

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

答案 1 :(得分:0)

您可以尝试使用wget来获取页面。您可以使用此应用程序分析登录过程www.portswigger.net/proxy /.

答案 2 :(得分:0)

对于它的价值,您可以查看Webrat。它用于自动验收测试的工具,但我认为您可以使用它来模拟填写登录字段,然后按名称单击链接,并将所需的HTML作为字符串获取。没有尝试做过这样的事情,等等。

相关问题