使用Webdriver和PhantomJ记录HTTP流量

2024-05-14 10:08:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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

from selenium import webdriver

driver = webdriver.PhantomJS()
driver.get('http://www.golem.de')

我已经在PhantomJS中找到了一些功能:

^{pr2}$

但我不知道如何将其分别与Selenium Webdriver和Ghostdriver结合起来。 我怎么能这么做?在


Tags: fromimport脚本httpgetwwwdriverselenium
3条回答

另一个一般的低级方法,但比strace稍高一点,是tcpdump。您可以筛选到服务器应用程序的特定侦听端口范围和目标主机。如果需要,您还可以记录数据包以便以后分析。使用-AASCII)转储选项,您可以过滤对给定页面的请求。在端口80上请求本地主机的一个简单示例:

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

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

正如托本所说driver.get_日志(“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()

对于其他解决方案,我们可以参考: 1browsermob-proxy, 2或者使用webdriver/firebug来捕获网络(似乎netexport无法被Firefox验证,也许我们可以使用firebug本身,对于最新的firebug,它具有导出har的功能) 三。与2相同,另一个解决方案是:How to capture all requests made by page in webdriver? Is there any alternative to Browsermob?

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

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

部分输出:

^{pr2}$

相关问题 更多 >

    热门问题