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就可以了。
3.启动mitmproxy
mitmproxy启动命令有三种,分别是mitmproxy,mitmweb,mitmdump。由于win不支持mitmproxy,所以本次只介绍后两者的用法。
1)mitmdump
mitmdump是在终端打印抓包信息,我们在终端直接输入mitmdump就可以启动了。
下面是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
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。
启动完本地服务器代理后其实我们就可以看见抓包信息了,不过全是报错信息,因为浏览器还没有安装证书。
2)在浏览器输入:http://mitm.it/ 下载win证书
下载完成后直接安装即可。直接傻瓜式安装,需要注意的是将证书安装到下图存储中
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代理。
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)
在获取到请求和响应对象后,用对象名可直接调用自己需要的属性
编写完python代码后再终端启动mitmproxy并指定脚本文件,就可以看见打印的接口信息了
mitmweb -s ./lianxi/mitmproxy.py
python mitmproxy抓包库的更多相关文章
- mitmproxy抓包工具
中文官网 https://ptorch.com/docs/10/mitmproxy-concepts-options mitmproxy抓包工具 1. mitmproxy 介绍与安装 需要安装pyth ...
- python+mitmproxy抓包过滤+redis消息订阅+websocket实时消息发送,日志实时输出到web界面
本实例实现需求 在游戏SDK测试中,经常需要测试游戏中SDK的埋点日志是否接入正确.本实例通过抓包(客户端http/https 请求)来判定埋点日志是是否接入正确. 实现细节:使用django项目,后 ...
- mitmproxy抓包软件在mac上边的安装
官网介绍:mitmproxy is a free and open source interactive HTTPS proxy. mitmproxy 是用 Python 和 C 开发的一个中间人代理 ...
- 从零开始学mitmproxy抓包工具
Man In The Middle mitm是Man In The Middle的首字母缩写,意思是位于中间的人,表明mitmproxy是一个代理,可以拦截请求,实现网络抓包.知名的网络抓包工具有Fi ...
- python 进行抓包嗅探
一.绪论 最近一直想弄一个代理,并且对数据包进行解读,从而完成来往流量的嗅探.于是今天学习了一下如何使用Python抓包并进行解包. 首先要用到两个模块 dpkt(我这边ubuntu16.04 LTS ...
- 安装Python及各种包/库——没有网络的电脑上
我们做项目时可能会遇到,一些电脑只能联内网或者无法联网,这种情况怎样在电脑上安装Python及各种第三方包/库呢? 1.首先,在有网络的电脑上在python官网下载好python安装包,地址:http ...
- 利用Mitmproxy抓包
http://mrpeak.cn/blog/mitmproxy/ 和Charles同样强大的免费抓包软件. 它是在终端操作的,界面没有Charles那么可视化.不过也很好用,通过各种快捷键操作,效 ...
- Python—网络抓包与解包(pcap、dpkt)
pcap安装 [root@localhost ~]# pip install pypcap 抓包与解包 # -*- coding:utf-8 -*- import pcap, dpkt import ...
- Python + winpcap抓包和发包
winpcapy Python的winpcapy库可以简单地实现收发Layer2层(数据链路层,以太网)数据. winpcapy主页:https://github.com/orweis/winpcap ...
- 使用mitmproxy抓包手机APP的配置步骤
转: https://www.jianshu.com/p/8ee3f9f46d7a 注意 1. 手机安装完证书之后还有一步 “证书信任设置” 操作 2. 手机设置代理的时候 ip地址和电脑本机是一样的
随机推荐
- 当我把ChatGPT拉进群聊里,我的朋友都玩疯了
前言 近期ChatGPT可以说是太火了,问答.写论文.写诗.写代码,只要输入精确的prompt,他的表现总是让人惊喜.本着打不过就加入的原则.要是把ChatGPT拉入群聊中,会是怎样一番场景?说做就做 ...
- while与do-while的区别是什么,怎么用?
前言 在上一篇文章中,壹哥给大家讲解了循环的概念,并重点给大家讲解了for循环的使用.但在Java中,除了for循环之外,还有while.do-while.foreach等循环形式.今天壹哥就再用一篇 ...
- C#实现的网易云音频下载器(白嫖)
链接 下载点这里 主要是想白嫖音乐,但是java gui写的很复杂,python不会写,c#学的也是半吊子,大大佬们勿喷 经测试大部分音乐可以下载,部分会出现路径非法 form.cs的代码 using ...
- SpringBoot 整合Quartz 定时任务框架
更多内容,前往 IT-BLOG 一.Scheduled 定时任务 [1]添加 Scheduled相关依赖,它是 Spring自带的一个 jar包因此引入 Spring的依赖: 1 <depend ...
- Java面试——缓存
一.什么是缓存 [1]缓存就是数据交换的缓冲区(称作:Cache),当某一硬件要读取数据时,会首先从缓存中查询数据,有则直接执行,不存在时从磁盘中获取.由于缓存的数据比磁盘快的多,所以缓存的作用就是帮 ...
- Kubernetes 各个组件 启动参数介绍
kube-controller-manager Kubernetes 控制器管理器是一个守护进程,内嵌随 Kubernetes 一起发布的核心控制回路.在机器人和自动化的应用中,控制回路是一个永不休止 ...
- 碉堡!“万物皆可分”标记模型上线「GitHub 热点速览」
这周有个让人眼前一亮的图像识别模型 segment-anything,它能精细地框出所有可见物体,它标记出的物体边界线清晰可见.如此出色的模型,自然获得了不少人的赞赏,开源没几天,就拿下了 18k+ ...
- super 与 this 关键字
super与this用法相似: 1.普通的直接引用 2.形参与成员名字重名,用 this 来指代类本身,super指代父类 public class Students extends Person { ...
- 【python爬虫】爬取美女图片
一,导入包文件 os:用于文件操作.这里是为了创建保存图片的目录 re:正则表达式模块.代码中包含了数据处理,因此需要导入该模块 request:请求模块.通过该模块向对方服务器发送请求获取数据包 l ...
- 【SSM项目】尚筹网(五)项目改写:使用前后端分离的SpringSecurityJWT认证
在项目中加入SpringSecurity 1 加入依赖 <!-- SpringSecurity --> <dependency> <groupId>org.spri ...