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地址和电脑本机是一样的
随机推荐
- java多线程--3 线程状态、线程方法、线程类型
java多线程--3 线程状态.线程方法.线程类型 线程状态 创建状态: **就绪状态: ** 进入状态: 创建状态:启动线程 阻塞状态:阻塞解除 运行状态:释放CPU资源 阻塞状态: 进入状态: 运 ...
- MySQL 索引的种类
我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重. 一.平衡多路查 ...
- 原生请求 js、jquery封装的ajax请求、axios请求与fetch请求区别与优缺点
原生JS请求 现代浏览器,最开始与服务器交换数据,都是通过XMLHttpRequest对象.它可以使用JSON.XML.HTML和text文本等格式发送和接收数据. 首先我们先把原生的请求封装一下: ...
- 鸿蒙开发学习笔记-UIAbility-Router页面跳转接口源码分析
在鸿蒙开发中,UIAbility的跳转使用 router 方法. 在使用的时候需导入 import router from '@ohos.router'; 该方法接口成员如下: 1.interface ...
- 【原创】Ubuntu Pro 中的RealTime linux(Real-time Ubuntu/PREEMPT-RT/ubuntu官方PREEMPT-RT)
[原创]Ubuntu Pro 订阅中的realtime linux(Real-time Ubuntu/PREEMPT-RT) 目录 [原创]Ubuntu Pro 订阅中的realtime linux( ...
- 六位一体Serverless化应用,帮你摆脱服务器的烦恼
随着互联网技术的飞速发展,越来越多的应用横空出世,是以不可避免带来了大量的服务器需求.大部分的开发者都选择购买或者租用服务器,然而这样也带来了诸多的烦恼. 1.硬件成本高昂 购买服务器费用昂贵,除 ...
- Semantic Kernel 入门系列:🪄LLM的魔法
ChatGPT 只是LLM 的小试牛刀,让人类能够看到的是机器智能对于语言系统的理解和掌握. 如果只是用来闲聊,而且只不过是将OpenAI的接口封装一下,那么市面上所有的ChatGPT的换皮应用都差不 ...
- 五月十二号java基础知识点
1.注解是代码中特殊标记,作用是告知编译器做什么事2.反射允许程序在运行状态时,对任意一个字节码获取它所有信息3.内部类是定义在类中的嵌套类4.匿名内部类是定义在类的同时创建该类的一个对象5.lamb ...
- 在void 中使用return的意思
在定义的void函数里如果想要提前终止函数 格式为 return; 如果 在有返回值的函数中 格式为: return+值(0 -1 ......) 但如果在void 函数中写return 0 ; 则会 ...
- Java中的自动装箱与自动拆箱
前言 在Java中,基本数据类型与其对应的封装类之间可以进行自动转换,这种特性称为自动装箱(autoboxing)和自动拆箱(unboxing).自动装箱和自动拆箱使得我们在使用基本数据类型时更加方便 ...