当前位置:网站首页 > 更多 > 编程开发 > 正文

[Python] selenium获取网络请求

作者:CC下载站 日期:2021-01-11 00:00:00 浏览:71 分类:编程开发

之前有人找我做一个他们学校一键报备的小东西,然后因为比赛原因,我也就一直没去弄,说月底再来找我,然后今天来找到了我,稍微看了下。

既然是健康报备,那就需要登录啥的,这就需要账号密码什么的了。

经过分析发现,账号密码虽然没有加密,但是他在每次数据请求的请求头的时候都放了一个decodes参数,然后是由学号+Unifri+时间戳组成

然后再往里面分析的时候,就有点看不懂了,好吧是我太菜了

考虑到也就几百块,也就没必要为这再去深入学一下了,于是想到了selenium,去模拟操作,然后获取请求中的decodes参数。

但是吧,似乎selenium不提供获取网络请求,经过百度发现有一个东西是browsermobproxy

Browsermob-Proxy是一个开源的Java编写的基于LittleProxy的代理服务。Browsermob-Proxy的具体流程有点类似与Flidder或Charles。即开启一个端口并作为一个标准代理存在,当HTTP客户端(浏览器等)设置了这个代理,则可以抓取所有的请求细节并获取返回内容。

先在python的虚拟环境中安装一下对应的包:

pip install browsermob-proxy

然后去GitHub下载一下这个东西:https://github.com/lightbody/browsermob-proxy/releases

为了提升速度,已经将它存到了网盘:https://mo.own-cloud.cn/#/s/Y924TQ

下载完之后,将其解压到项目文件同目录

开启proxy

frombrowsermobproxyimportServer

server=Server('browsermob-proxy-2.1.4/bin/browsermob-proxy.bat')#这是bat文件路径
server.start()
proxy=server.create_proxy()

然后配置proxy启动Webdriver

chrome_options=Options()
proxy.new_har('bb',options={'captureHeaders':True})
chrome_options.add_argument('--proxy-server={0}'.format(proxy.proxy))
driver=webdriver.Chrome(chrome_options=chrome_options)

然后就可以通过

result=proxy.har

获取到所有的网络请求数据了,这边建议自己debug看一下,更加清晰

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯