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

使用Ruby脚本通过https登录网站,ruby,scripting,login,https,Ruby,Scripting,Login,Https,好的,这里是交易:我正在开发一个Ruby应用程序,它将从网站获取数据,并将数据聚合到一个XML文件中 我需要从中获取数据的网站没有我可以使用的任何API,因此我唯一能想到的就是登录到该网站,依次加载包含我需要的数据的页面(在本例中为PMs;我想归档它们),然后解析返回的HTML 但问题是,我不知道有什么方法可以通过编程模拟登录会话 有人会有什么建议,或者知道我可以使用什么经验证的方法成功登录到https页面,然后使用登录时的临时cookie会话从站点以编程方式加载页面吗?它不一定是一个只使用Ru

好的,这里是交易:我正在开发一个Ruby应用程序,它将从网站获取数据,并将数据聚合到一个XML文件中

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

但问题是,我不知道有什么方法可以通过编程模拟登录会话

有人会有什么建议,或者知道我可以使用什么经验证的方法成功登录到https页面,然后使用登录时的临时cookie会话从站点以编程方式加载页面吗?它不一定是一个只使用Ruby的解决方案——我只是想知道我如何才能真正做到这一点。如果有帮助的话,这个网站就是使用微软的.NET Passport服务作为登录/会话机制的网站


欢迎就此事提供任何意见。谢谢。

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

,您可以查看它的价值。它是用来进行自动验收测试的工具,但我认为您可以使用它来模拟填写登录字段,然后按链接的名称单击链接,并获取所需的HTML作为字符串。还没试过做类似的事情,tho。

Mechanize Mechanize是ruby库,它模拟了web浏览器的行为。你可以点击链接,填写表格并提交。它甚至有一个历史和记忆饼干。看来你的问题在机械化的帮助下很容易解决

以下示例取自:


我只是用它来解决我一直面临的一个问题。谢谢太棒了!我无法理解这个链接,但这里还有其他一些基本用法示例:如何解决一些网站在没有JavaScriptp的情况下无法登录的问题,因为mechanize不支持javascript。
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