如何以编程方式确定网页是否包含不安全的元素?

时间:2012-07-06 15:48:39

标签: ruby automated-tests watir-webdriver

我正在使用watir-webdriver进行测试自动化,需要一种方法来确定我的测试页是否在浏览器中触发了不安全内容警告,或者是否在http而不是https中加载任何资源。

有没有办法在watir-webdriver中执行此操作?或者我可以使用另一种工具来做到这一点吗?

例如,如果您转到https://github.com并查看网络流量,您会看到一堆.js文件和通过https加载的图片。我需要一个能够确定是否使用http而不是https加载任何资源的脚本。主要浏览器会在安全网站上发生某种警告,但它们并不总是会创建弹出窗口。

enter image description here

2 个答案:

答案 0 :(得分:0)

我认为您最好的选择是使用pcapruby-pcaptutorial)捕获watir-webdriver发送的请求。你的代码是这样的:

require 'pcaplet'

# start capturing packets
httpdump = Pcaplet.new('-s 1500')

#
# do web requests here
#

insecure_reqs = []
httpdump.add_filter(
  # you could also filter by just tcp and then check pkt.dst_port in the loop
  Pcap::Filter.new('tcp and dst port 80', httpdump.capture)
)

httpdump.each_packet do |pkt|
  insecure_reqs << pkt.dst.to_s
end

(免责声明:这是未经测试的,并且是从ruby-pcap的example拼凑而成的。)

缺点是你需要确保你的机器上没有其他任何东西在你的测试运行时发出请求,所以在隔离的服务器或VM中运行它是一个不错的选择。

答案 1 :(得分:0)

我一直在开发的内容适用于99%的案例。您可以使用PhantomJS并使用backtics在Ruby代码中执行它,或使用this GEM捕获输出,然后对其进行过滤。他们甚至有一个名为netlog.js的样本,可以直接使用。

输出是HAR或HTTP存档,这是你在屏幕抓取中看到的,但是它已经被打扮了。

1%的时间不起作用是Flash文件调用的是http元素。我在广告中看过这个。如果您的网站上没有Flash广告,则不应该是一个问题。我做了,现在我正在研究1%;)