Python 使用Webdriver和PhantomJS记录HTTP流量

Python 使用Webdriver和PhantomJS记录HTTP流量,python,selenium-webdriver,phantomjs,ghostdriver,Python,Selenium Webdriver,Phantomjs,Ghostdriver,如何使用PhantomJS通过Webdriver记录页面加载的所有HTTP请求和响应? 我正在使用python,我的超级简单测试脚本如下所示: from selenium import webdriver driver = webdriver.PhantomJS() driver.get('http://www.golem.de') 我已经在PhantomJS中找到了这些功能: page.onResourceRequested = function (request) { conso

如何使用PhantomJS通过Webdriver记录页面加载的所有HTTP请求和响应? 我正在使用python,我的超级简单测试脚本如下所示:

from selenium import webdriver

driver = webdriver.PhantomJS()
driver.get('http://www.golem.de')
我已经在PhantomJS中找到了这些功能:

page.onResourceRequested = function (request) {
    console.log('Request ' + JSON.stringify(request, undefined, 4));
};
但我不知道如何将它与SeleniumWebDriver和Ghostdriver结合起来。
我该怎么做呢?

记录所有网络流量的一种方法是使用奇妙的工具
strace
,将所有网络请求(和数据)记录到一个文件中

strace -s9999 -e trace=network curl http://example.com > /dev/null
部分输出:

sendto(3, "GET / HTTP/1.1\r\nUser-Agent: curl/7.32.0\r\nHost: example.com\r\nAccept: */*\r\n\r\n", 75, MSG_NOSIGNAL, NULL, 0) = 75
recvfrom(3, "HTTP/1.1 200 OK\r\nAccept-Ranges: bytes\r\nCache-Control: max-age=604800\r\nContent-Type: text/html\r\nDate: Sun, 08 Ju...

另一种通用的低电平方式是
tcpdump
,它的电平略高于
strace
。您可以筛选到服务器应用程序的特定侦听端口范围和目标主机。如果需要,还可以记录数据包以供以后分析。使用
-A
()转储选项,您可以筛选到给定页面的请求。端口80上本地主机请求的一个简单示例:

tcpdump -i lo -A -nn dst port 80 and dst host `hostname`

我相信Wireshark或类似的软件也可以进行这种特定于协议的过滤。

正如Torben所说,driver.get_log(“har”)是一种解决方案,我认为它是我的最佳解决方案

from selenium import webdriver

service_args = ['--ignore-ssl-errors=yes']
driver = webdriver.PhantomJS(service_args=service_args)
driver.get('https://www.google.com/')
screenshot = driver.get_screenshot_as_png()
imgname = "google.png"
save_img = open(imgname, 'a')
save_img.write(screenshot)
save_img.close()
print driver.get_log('har')
driver.quit()
关于其他解决方案,我们可以参考: 1. 2.或者使用来捕获网络(看起来netexport无法通过Firefox验证,也许我们可以使用firebug本身,对于最新的firebug,它具有导出har的功能)
3.与2相同,这里还有另一个解决方案:

我最近发现,使用
driver.get_log(“HAR”)
可以获取一些HAR格式的HTTP信息,但我对每种形式的重定向都感兴趣,并不是每种情况都会报告它们。有什么建议吗?那个输出比。。。低级的。。。比我希望的要多:(但是,谢谢,比没有什么好。我知道这不是你的问题的答案,但也许其他人觉得它有用。如果你需要HTTP流量只是为了DEV的目的,那么你可以考虑暂时使用Firefox的WebDebug,这样你就可以检查所有的东西。一旦一切都是正确的,你可以切换回幻象。