前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >selenium获取网络请求

selenium获取网络请求

作者头像
SingYi
发布2022-07-13 21:41:01
2.2K0
发布2022-07-13 21:41:01
举报
文章被收录于专栏:Lan小站Lan小站

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

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

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

image.png
image.png

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

image.png
image.png

考虑到也就几百块,也就没必要为这再去深入学一下了,于是想到了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

代码语言:javascript
复制
from browsermobproxy import Server

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

然后配置proxy启动Webdriver

代码语言:javascript
复制
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)

然后就可以通过

代码语言:javascript
复制
result = proxy.har

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

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com