当前位置: 首页 > 面试题库 >

使用Selenium / PhantomJS进行网络捕获

卫宁
2023-03-14
问题内容

我想捕获到我正在浏览使用python的Selenium的网站的访问量,因为使用代理将使访问量达到https的水平,这将不会使我走远。

我的想法是使用selenium来运行phantomJS并使用phantomJS执行脚本(不是在页面上使用webdriver.execute_script(),而是在phantomJS本身上)。我在想netlog.js脚本(从这里https://github.com/ariya/phantomjs/blob/master/examples/netlog.js)。

由于它在命令行中像这样工作

phantomjs --cookies-file=/tmp/foo netlog.js https://google.com

selenium必须有类似的方法吗?

提前致谢

更新:

用browsermob-proxy解决了。

pip3 install browsermob-proxy

Python3代码

from selenium import webdriver
from browsermobproxy import Server

server = Server(<path to browsermob-proxy>)
server.start()
proxy = server.create_proxy({'captureHeaders': True, 'captureContent': True, 'captureBinaryContent': True})

service_args = ["--proxy=%s" % proxy.proxy, '--ignore-ssl-errors=yes']
driver = webdriver.PhantomJS(service_args=service_args)

proxy.new_har()
driver.get('https://google.com')
print(proxy.har)  # this is the archive
# for example:
all_requests = [entry['request']['url'] for entry in proxy.har['log']['entries']]

问题答案:

我为此使用代理

from selenium import webdriver
from browsermobproxy import Server

server = Server(environment.b_mob_proxy_path)
server.start()
proxy = server.create_proxy()
service_args = ["--proxy-server=%s" % proxy.proxy]
driver = webdriver.PhantomJS(service_args=service_args)

proxy.new_har()
driver.get('url_to_open')
print proxy.har  # this is the archive
# for example:
all_requests = [entry['request']['url'] for entry in proxy.har['log']['entries']]

“ har”(http存档格式)还有许多有关请求和响应的其他信息,这对我非常有用

在Linux上安装:

pip install browsermob-proxy


 类似资料:
  • 问题内容: 我在使用时遇到了麻烦,因为我之前从未见过它,也不知道我在用它做什么。 基本上,我正在关闭部队,因为我试图在主类上运行连接。有人可以帮我添加代码吗: 问题答案: 只是一个简单的例子,它看起来像:

  • 问题内容: 我正在使用pythonDjango创建一个Web应用程序。我正在使用selenium来启动无头浏览器(phantomjs)并单击几次,直到到达特定页面。我希望捕获网络流量并获得特定网络呼叫的响应。该网络调用实际上包含一个html文档作为其响应。 有什么办法可以做到这一点? 问题答案: 您可以访问浏览器或chromedriver日志,它们在网络响应方面略有不同。称为浏览器日志,称为驱动程

  • 我计划用网络摄像机捕捉视频,然后用opencv处理,最后在google原生客户端环境下用opencv naclport在网页上显示输出 我现在意识到的是 使用javascript中的MediaStreamTrack接口和 然后 将其编码为Base64字符串并发送到c模块以使用opencv进行处理, 在cpp模块中,将其解码回Mat图像并进行处理,最后将其发送回浏览器进行显示。 所以我想知道,在op

  • Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器)。 Selenium 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。 Sel

  • 当我使用jsonObject请求进行网络调用时。我没有收到任何答复。我总是收到请求的HTTP响应= 当请求缓慢时,Android截击双发: 来源1,来源2,来源3

  • OKHTTP在某种程度上支持并发请求API吗? 如果没有,最好的实现方法是什么?