首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Ruby脚本通过https登录网站

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

Stack Overflow用户
提问于 2009-11-14 17:46:26
回答 3查看 18.8K关注 0票数 20

好了,接下来是这样的:我正在开发一个Ruby应用程序,它将从网站获取数据,并将这些数据聚合到一个XML文件中。

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

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

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

欢迎对此问题的任何意见。谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-14 20:01:06

机械化

Mechanize是一个ruby库,它模拟web浏览器的行为。您可以单击链接,填写表单并提交它们。它甚至有一段历史,还能记住饼干。似乎你的问题可以很容易地解决与机械化的帮助。

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

代码语言: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
票数 41
EN

Stack Overflow用户

发布于 2009-11-14 17:52:49

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

票数 0
EN

Stack Overflow用户

发布于 2009-11-14 17:52:58

不管它有什么价值,你都可以去Webrat看看。它是用于自动化验收测试的工具,但我认为您可以使用它来模拟填写登录字段,然后按名称单击链接,并以字符串形式获取所需的HTML。我还没试过做这样的事呢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1733829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档