加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 使用Capybara或类似功能访问所有已加载的资源

发布时间:2020-12-17 02:18:59 所属栏目:百科 来源:网络整理
导读:我正在寻找一种可能性,可以轻松访问并列出网页文档开始加载后加载的所有资源:脚本,图像,样式表等,使用无头浏览器.我对文件的网址,状态代码和类型等感兴趣. 想象一种以编程方式访问“网络”选项卡(开发人员工具)为您提供的信息的方法: 有没有人知道一个Ruby
我正在寻找一种可能性,可以轻松访问并列出网页文档开始加载后加载的所有资源:脚本,图像,样式表等,使用无头浏览器.我对文件的网址,状态代码和类型等感兴趣.

想象一种以编程方式访问“网络”选项卡(开发人员工具)为您提供的信息的方法:

有没有人知道一个Ruby库来帮助我这个或者 – 甚至更好 – 如果有办法用Capybara(-webkit)实现这个目的?

更新

似乎Poltergeist has a method called network_traffic就是我所追求的.但是,还没有时间研究它.我会做一次报告.

解决方法

正如更新中所提到的,似乎有一种方法可以通过Poltergeist(一个Capybara驱动程序)来做到这一点.这是一个快速且非常“hackish”的实验:

require 'rubygems'
require 'capybara'
require 'capybara/poltergeist'

driver = Capybara::Poltergeist::Driver.new({})
port   = Capybara::Poltergeist::Util.find_available_port
server = Capybara::Poltergeist::Server.new(port,30)
client = Capybara::Poltergeist::Client.start(port,:path              => driver.options[:phantomjs],:window_size       => driver.options[:window_size],:phantomjs_options => driver.phantomjs_options
)

browser = Capybara::Poltergeist::Browser.new(server,client,nil)
browser.visit('http://www.google.com/')

browser.network_traffic.each do |request|
  # sorry,quick and dirty to see what we get:
  request.response_parts.uniq(&:url).each do |response|
    puts "#{response.url}: #{response.status}"
  end
end

=> 

http://www.google.com/: 200
http://ssl.gstatic.com/gb/images/b_8d5afc09.png: 200
http://www.google.com/images/srpr/logo1w.png: 200
http://www.google.com/images/srpr/nav_logo80.png: 200
http://www.google.com/xjs/_/js/hp/sb_he,pcc/rt=j/ver=FaiMBboaDLc.en_US./d=1/sv=1/rs=AItRSTMKxoHomLOW7ITf6OnfIEr5jQCEtA: 200

然而,这非常缓慢,当然远非任何可用的.我打算更深入地挖掘Poltergeist,以便在较低的层次上做同样的事情.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读