mitmdump+影刀做高度自定义的网络监听----by华南组
回答
收藏

mitmdump+影刀做高度自定义的网络监听----by华南组

克林
2023-06-12 13:47·浏览量:3193
克林
发布于 2023-06-12 13:473193浏览

作者:克林

一、背景

大家都知道咱影刀的网络监听相关指令非常给力,但目前仍不满足一些小伙伴的需求,如:根据url监听、根据请求模式监听、获取对应的响应头等。

这里提供一个解决方案,利用python mitmdump + 影刀网页自动化,来做高度的自定义监听需求。

二、脚本效果展示

配置好过滤规则后,用影刀进行网页自动化的操作,每当有符合我们要求的请求产生时,脚本会实时产生一个字典,里面包含请求的url、域名、请求方式、请求头等信息。

字典结构如下:

自定义过滤内容示例:

同时,脚本会在我们指定路径动态写入一条数据至excel。

三、如何上手

3.1 实现原理

首先浏览器每产生一个请求,mitmdump都会捕捉到对应的流:flow, 这个flow提供了一些访问请求信息的api,下面是它的一些常用api及返回值及调用示例。

当有flow产生时,会依次触发request和response函数,下面是一个csdn上的简单示例:

我们可以通过这两个方法,过滤我们想要的请求,通过flow api获得我们想要的信息。一个简单的过滤示例(如果请求url包含某字符串,就打印出对应的响应状态码和响应文本):


四、如何部署使用,假如你只想使用这个脚本,跟着我来做。

4.1 打开影刀,新建一个web自动化流程A,这样我们就可以对执行流程A时产生的所有请求进行过滤,保存我们想要的请求信息。

4.2 先在自动化流程A加上以下python模块,并复制对应代码进去。

config.py

https://docs.qq.com/doc/p/dc52a17100b1f963e620822aba44b97d252d5ed5

csv_utils.py

https://docs.qq.com/doc/p/f54af0fa0cc5e0099f99ef87eb6100dd2c9a0617

csv_writer.py

https://docs.qq.com/doc/p/1ea6cb8e704b485fe09e11605440dc3252960149

record_helper.py

https://docs.qq.com/doc/p/221b48e76f4543942fbdbef4b1c19b386457d8ee

4.3 安装mitmdump相应环境

https://blog.csdn.net/lly_hcy/article/details/127269260

右键record_helper.py,打开文件所在文件夹,回到目录的上一级,进入venv的Scripts文件夹。在上面地址栏打cmd,回车。

输入 pip install mitmproxy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com  回车。

其他的第三方库也是这样安装,比如说脚本中的openpyxl, 输入 pip install openpyxl-i http://pypi.douban.com/simple --trusted-host pypi.douban.com 回车。

安装好后,输入mitmdump,出现这个,说明环境安装成功了,按ctrl + c退出服务。

4.4 配置脚本中的config.py文件

请求文件保存路径:

csv的表头,默认是保存全部请求信息,也可自己配置想要的信息:

若只保存请求的url 和响应内容:

配置过滤规则:

配置过滤规则示例:

过滤一个请求,该请求,host等于api.bilibili.com,并且响应状态码等于200,并且请求方式等于POST,并且响应内容不等于空,并且请求方式不等于GET,并且请求url包含bilibili这个字符串。

说明:所有的过滤的字段来自上面的csv参数填写说明,不可写错。

4.5 运行脚本

我们复制刚刚在影刀写入的record_helper.py的文件路径

进入刚刚提到的venv的Scripts文件夹,在上面地址栏打cmd,回车。

在控制台输入mitmdump -p 4396 -s 你复制的文件地址,回车。
然后电脑系统设置代理,ip为127.0.0.1,端口为4396.

4.6执行你写的影刀流程A,可看见在自定义请求保存路径的excel文件。

控制台会输出很多请求日志:

监听结果保存:

收藏9
全部回答1
最新
发布回答
回答