我正在寻找一种可能性,以便使用 headless 浏览器轻松访问和列出网页文档开始加载后加载的所有资源:脚本、图像、样式表等。我对文件的 url、状态代码和类型等感兴趣。
想办法以编程方式访问 Network
选项卡(开发人员工具)为您提供的信息:
有没有人知道 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,也许在较低的层次上做同样的事情。
关于ruby - 使用 Capybara 或类似工具访问所有加载的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12615646/