python mitmproxy抓包库

这篇具有很好参考价值的文章主要介绍了python mitmproxy抓包库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.简介

mitmproxy是一款用Python编写的支持HTTP(S)的中间人代理工具。它可以拦截、查看、修改、重放和保存HTTP/HTTPS流量 ,支持命令行界面和图形界面,可用于安全测试、网络调试、API开发和反向工程等场景。mitmproxy具有很高的灵活性和扩展性,可以通过插件机制进行定制化开发和功能扩展。本文注意介绍命令行模式。

二.环境配置及启动

1.安装mitmproxy库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple mitmproxy  # pip install mitmproxy

2.安装成功后查看版本

mitmdump  --version

若提示报错:ImportError: cannot import name 'soft_unicode' from 'markupsafe',大概意思是说markupsafe版本过低,但是通过pip show  markupsafe查看后发现版本是2.1.2的。后来查看资料才发现这个版本的markupsafe不能用,没办法,只能卸载重新安装2.0.1的了。

卸载:pip uninstall markupsafe
安装:pip install -i  https://pypi.tuna.tsinghua.edu.cn/simple  --trusted-host pypi.tuna.tsinghua.edu.cn  markupsafe==2.0.1

安装的过程一定要加:--trusted-host pypi.tuna.tsinghua.edu.cn(下载的镜像),大概意思就是信任该下载地址。完了之后再次输入mitmdump  --version就可以了。

mitmproxy,技术分享,自动化测试,软件测试,selenium,测试工具,软件测试,自动化测试,程序人生

3.启动mitmproxy

mitmproxy启动命令有三种,分别是mitmproxy,mitmweb,mitmdump。由于win不支持mitmproxy,所以本次只介绍后两者的用法。

1)mitmdump

mitmdump是在终端打印抓包信息,我们在终端直接输入mitmdump就可以启动了。

mitmproxy,技术分享,自动化测试,软件测试,selenium,测试工具,软件测试,自动化测试,程序人生

 下面是mitmdump的一些参数,有兴趣的可以研究看看。

-h,--help:显示帮助信息
-v,--version:显示版本信息
-q,--quiet:静默模式,只输出警告和错误信息
-s,--scripts:指定JavaScript脚本文件路径
-r,--readfile:从文件中读取流量
-w,--writefile:将流量写入文件
-p,--listen-port:指定监听端口
-P,--http-proxy:指定HTTP代理地址
-U,--upstream-proxy:指定上游代理地址
--ssl-insecure:禁用SSL验证
--anticomp:禁用自动解压缩
--no-http2:禁用HTTP/2协议
--no-websocket:禁用WebSocket协议
--no-anticache:禁用自动缓存
--no-server-replay:禁用服务器回放模式
--set:设置mitmproxy配置项,格式为key=value
--showhost:显示主机名

2)mitmweb

mitmweb是将抓包信息显示在web页,在终端输入mitmweb后会自动打开浏览器进行抓包,也可以在浏览器中直接输入地址:http://127.0.0.1:8081/#/flows

mitmproxy,技术分享,自动化测试,软件测试,selenium,测试工具,软件测试,自动化测试,程序人生

mitmproxy,技术分享,自动化测试,软件测试,selenium,测试工具,软件测试,自动化测试,程序人生

mitmweb常用参数。

-h,--help:显示帮助信息;
-b,--listen-host:指定mitmweb监听的IP地址;
-p,--listen-port:指定mitmweb监听的端口号;
--web-host:指定mitmweb UI的IP地址;
--web-port:指定mitmweb UI的端口号;
-s,--scripts:指定mitmweb运行的脚本文件;
--anticache:启用anti-caching;
--anticomp:启用anti-compression;
--anticomp-decoding:启用anti-compression解码;
--client-certs:指定客户端证书文件路径;
--no-web-open-browser:启动mitmweb时不自动打开浏览器;
--no-web-socket:禁用WebSocket协议;
--no-http2:禁用HTTP/2协议;
--no-web:禁用mitmweb UI。

三.抓包配置

1.web

1)在终端启动mitmproxy后,我们打开电脑本地代理(win键>更改代理设置>开启使用代理服务器),端口要与启动mitmproxy一致8080。

mitmproxy,技术分享,自动化测试,软件测试,selenium,测试工具,软件测试,自动化测试,程序人生

 启动完本地服务器代理后其实我们就可以看见抓包信息了,不过全是报错信息,因为浏览器还没有安装证书。

mitmproxy,技术分享,自动化测试,软件测试,selenium,测试工具,软件测试,自动化测试,程序人生

 2)在浏览器输入:http://mitm.it/ 下载win证书

mitmproxy,技术分享,自动化测试,软件测试,selenium,测试工具,软件测试,自动化测试,程序人生

 下载完成后直接安装即可。直接傻瓜式安装,需要注意的是将证书安装到下图存储中

mitmproxy,技术分享,自动化测试,软件测试,selenium,测试工具,软件测试,自动化测试,程序人生

 3)安装完证书后发现还是没法抓包,浏览器会提示不是私密连接,这个时候我们打开dos窗口,输入以下内容。

"C:\Program Files (x86)\chrome.exe" --proxy-server=127.0.0.1:8080 --ignore-certificate-errors

输入完点击回车后会自动打开浏览器,此时不必理睬就行,在终端执行ctrl+c键关闭mitmproxy服务后重新开启,便可以正常抓包了。

2.Android

1)终端启动mitmproxy服务

2)dos窗口输入ipconfig/all,查看本地IPv4代理。

mitmproxy,技术分享,自动化测试,软件测试,selenium,测试工具,软件测试,自动化测试,程序人生

 3)手机与电脑连接同一个局域网,开启手动代理后输入以上ip,端口为8080。

4)打开手机浏览器输入:http://mitm.it/ 下载安装Android证书,完了之后就可以正常抓包了

3.ios

与Android步骤一致,多了步证书信任,可参考:https://www.cnblogs.com/lihongtaoya/p/15196393.html

四.python代码实现

不做多余解释了直接贴代码

from mitmproxy import http


def request(flow: http.HTTPFlow):
    request_list = flow.request  # 获取请求对象
    print(request_list.method, request_list.host)


def response(flow: http.HTTPFlow):
    responses_list = flow.response  # 获取响应对象
    print(responses_list.text, responses_list.status_code)

在获取到请求和响应对象后,用对象名可直接调用自己需要的属性

mitmproxy,技术分享,自动化测试,软件测试,selenium,测试工具,软件测试,自动化测试,程序人生

 编写完python代码后再终端启动mitmproxy并指定脚本文件,就可以看见打印的接口信息了

mitmweb  -s  ./lianxi/mitmproxy.py

mitmproxy,技术分享,自动化测试,软件测试,selenium,测试工具,软件测试,自动化测试,程序人生

五.请求和响应如何做到一对一关系

我们在用python代码打印请求和响应的时候是错乱的,根本不知道该请求对应的响应是哪个。这个时候可以使用请求和响应对应的唯一id来判断,id的生成内部封装原来使用了uuid来生成的。我们这边就直接看代码了。文章来源地址https://www.toymoban.com/news/detail-731150.html

from mitmproxy import http


def request(flow: http.HTTPFlow):
    request_list = flow.request  # 获取请求对象
    print(request_list.method, request_list.host)


def response(flow: http.HTTPFlow):
    responses_list = flow.response  # 获取响应对象
    print(responses_list.text, responses_list.status_code)

到了这里,关于python mitmproxy抓包库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mitmproxy抓包

    实时拦截、修改 HTTP/HTTPS 请求和响应 可保存完整的 http 会话,方便后续分析和重放 支持反向代理模式将流量转发到指定服务器 支持 macOS 和 Linux上的透明代理模式 支持用 Python 脚本对 HTTP 通信进行修改 mitmproxy mitmproxy 是一个控制台工具,允许交互式检查和修改 HTTP 流量。它与

    2024年02月02日
    浏览(32)
  • 【mitmproxy手机端App抓包】

    前置条件 mitmproxy 已成功安装, 可参考上一篇 手机配置代理 Mac端查看电脑的ip地址 打开命令行输入: ifconfig 或者直接去 System Preference(系统偏好设置) → Network(网络)→Advance(高级) Windows端查看电脑的ip地址 打开命令行输入: ipconfig iOS 配置代理 一定确保手机和电脑用的是同一

    2024年02月15日
    浏览(44)
  • python自动化测试-自动化基本技术原理

    在之前的文章里面提到过:做自动化的首要本领就是要会  透过现象看本质  ,落实到实际的IT工作中就是  透过界面看数据 。 掌握上面的这样的本领可不是容易的事情,必须要有扎实的计算机理论基础,才能看到深层次的本质东西。 数据库应用系统  可能是最典型的网络

    2024年02月10日
    浏览(41)
  • 【Android安全】安装mitmproxy Https抓包证书 | 安卓SSL抓包

    macbook上 mitmproxy 抓取安卓手机https流量 重点是安装mitmproxy Https抓包证书 手机需要root,macbook上需要安装好mitmproxy 需要完成下文1-3: https://github.com/doug-leith/cydia (接入有线网并开启无线热点) 启用 IP 转发: sudo sysctl -w net.inet.ip.forwarding=1 保存文件: https://github.com/doug-leith/cy

    2024年01月22日
    浏览(45)
  • 【史上最硬核分享】Docker+jenkinsPipeline 运行实现 python 自动化(超详细)

    在 Linux 服务器安装 docker 创建 jenkins 容器 jenkins 中创建 pipeline 项目 根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境) 运行新的 python 容器,执行 jenkins 从仓库中拉下来的自动化项目 执行完成之后删除容器 Linux 服务器一台(我的是 CentOS7) 1、有云服务器的同学直接用

    2024年01月22日
    浏览(38)
  • mitmproxy 抓包神器-4.拦截请求实现篡改请求和返回数据

    fiddler 工具有个打断点功能非常实用,可以实现拦截请求,篡改请求和返回的数据。 mitmproxy 可以用python代码写插件的方式实现拦截请求,篡改请求和返回数据。 before response:这个是打在request请求的时候,未到达服务器之前 after response:也就是服务器响应之后,在Fiddler将响应

    2024年02月11日
    浏览(38)
  • mitmproxy 安卓模拟器/手机抓包教程(解决证书问题)

    本文主要解决的是 Android 模拟器/手机的抓包证书问题 。 也就是报“java.security.cert.CertPathValidatorException”错误的问题。 首先要启动 mitmproxy,三个版本任选。 打开 mitm.it。 如果页面上只有一行大字“If you can see this, traffic is not passing through mitmproxy.”,说明你没有正确配置代理

    2024年02月09日
    浏览(47)
  • python自动化测试selenium核心技术三种等待方式

    UI自动化测试过程中,可能会出现因测试环境不稳定、网络慢等情况,如果不做任何处理的话,会出现无法定位到特定元素而报错,导致自动化测试无法顺利执行。 selenium官网手册:Waits | Selenium slenium自动化测试中,主要涉及三种等待方式:     缺点:即使网络条件较好时

    2024年04月11日
    浏览(61)
  • 【Python 自动化】自媒体剪辑第一版·思路简述与技术方案

    大家都知道我主业是个运维开发(或者算法工程师),每天时间不多,但我又想做自媒体。然后呢,我就想了个方案,每天起来之后写个短视频的脚本,包含一系列图片和文字,然后上班的时候给它提交到流水线上跑,下班之前就能拿到视频,然后往各大平台上一传,是不是

    2024年02月09日
    浏览(41)
  • Python爬虫技术系列-06selenium完成自动化测试V01

    使用selenium库完成动点击下一页,点击视频操作等过程, 如果你非要说这是XX,那我也不过多辩解,毕竟 批评不自由,赞美无意义 。 本案例仅是技术演示,所以会隐去相关网址等,读者可以重点查看这里使用的selenium技术点即可。另外本版本为V01版本,所以仅仅是可用,很多

    2024年02月05日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包