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

问题描述 投票:19回答:3

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

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

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

[有人对我可以成功登录到https页面,然后使用登录时使用的临时cookie会话从站点以编程方式加载页面的方法有任何建议或知道吗?它不一定是仅适用于Ruby的解决方案-我只想知道我实际上如何做到这一点。如果有帮助,那么所涉及的网站就是使用Microsoft的.NET Passport服务作为其登录/会话机制的网站。

欢迎对此事进行任何投入。谢谢。

ruby scripting login https
3个回答
38
投票

机械化

Mechanize是ruby库,它模仿了Web浏览器的行为。您可以单击链接,填写表格并提交。它甚至具有历史记录并记录cookie。看来借助机械化可以轻松解决您的问题。

以下示例摘自http://docs.seattlerb.org/mechanize/EXAMPLES_rdoc.html

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
投票

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


0
投票

有关其价值,您可以签出Webrat。它打算用作自动验收测试的工具,但是我认为您可以使用它来模拟填写登录字段,然后单击其名称旁边的链接,并以字符串的形式获取所需的HTML。还没尝试做类似的事情,]

© www.soinside.com 2019 - 2024. All rights reserved.