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就可以了。

python  mitmproxy抓包库

3.启动mitmproxy

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

1)mitmdump

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

python  mitmproxy抓包库

 下面是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

python  mitmproxy抓包库

python  mitmproxy抓包库

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。

python  mitmproxy抓包库

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

python  mitmproxy抓包库

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

python  mitmproxy抓包库

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

python  mitmproxy抓包库

 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代理。

python  mitmproxy抓包库

 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抓包库

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

mitmweb  -s  ./lianxi/mitmproxy.py

python  mitmproxy抓包库

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

我们在用python代码打印请求和响应的时候是错乱的,根本不知道该请求对应的响应是哪个。这个时候可以使用请求和响应对应的唯一id来判断,id的生成内部封装原来使用了uuid来生成的。我们这边就直接看代码了。

from mitmproxy import http


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



def response(flow: http.HTTPFlow):
    print("response.flow.id:", flow.id)  # 每个请求和响应的flow.id是对应的,同样也是唯一的
    responses_list = flow.response  # 获取响应对象
    print(responses_list.status_code)

 文章来源地址https://www.toymoban.com/news/detail-468593.html

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

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

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

相关文章

  • 【mitmproxy手机端App抓包】

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

    2024年02月15日
    浏览(44)
  • 【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)
  • 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)
  • mitmproxy 抓包神器-2.抓取Android 和 iOS 手机 https 请求

    抓取手机请求的前提条件是确保手机和电脑在同一网段上,也就是说使用同一WiFi。 mitmweb 命令启动服务,默认监听8080端口 开启代理,设置监听8080端口,点保存按钮 打开手机设置-WIFI-长按你的wifi-修改网络-代理选择手动 输入服务器主机名和IP,服务器主机名就是自己电脑本

    2024年02月11日
    浏览(51)
  • 学完C/C++,再学Python是一种什么体验?

    你好,我是安然无虞。 与C/C++等其他语言不同的是,Python中两个整数相除的结果为浮点数 Python中浮点数在内存中存储的时候遵循IEEE754标准,这套标准在表示浮点数时可能会存在微小的误差,但这个误差在实际开发中不会造成太大的影响 Python中创建变量的语法非常简单,比如

    2024年01月17日
    浏览(72)
  • MitmProxy介绍以及使用

    mitmproxy 就是用于 MITM 的 代理(proxy), 而MITM,也就是(Man-in-the-middle attack) 中间人攻击 ,指的就是通过各种技术手段将入侵者的一台计算机(或服务器)虚拟放置在网络连接的两台计算机之间。(SMB会话劫持、DNS欺骗等)计算机相互通信的请求响应过程均可以被拦截获取,在中间人攻

    2024年02月04日
    浏览(47)
  • 在PyCharm中直接启动mitmproxy并自动打开&关闭系统代理

    在前面的文章中,有几篇是介绍 mitmproxy 的。 这个 mitmproxy 的确是个捕获数据的好工具,但在运行时候需要在命令行启动,这是很令人苦恼的。 之前也尝试过脱离命令行去启动 mitmproxy , 在Python中启动mitmproxy,脱离命令行启动mitmproxy监听 但它是借助Python 中的 os 和 subprocess 模

    2024年02月05日
    浏览(35)
  • python 抓包tcp数据拷贝转发

    在Python中,你可以使用 scapy 库进行抓包,使用 shutil 或 io 库进行数据的拷贝,以及使用 socket 库进行数据转发。下面是一个简单的示例,展示了如何进行这些操作: 首先,你需要安装必要的库。你可以使用pip来安装它们: 然后,你可以使用以下代码进行抓包、拷贝数据和转

    2024年01月25日
    浏览(38)
  • python工具-解析wireshark的rtp抓包

    python工具-解析wireshark的rtp抓包 抓包 代码 执行结果 将 rtp 包数据,使用 python 解析,然后根据需要,再进一步分析 使用 tcpdump 或 wireshark 抓 rtp 包 过滤 rtp 包,然后 ctrl+A 全选, ctrl+C 复制, ctrl+V 粘贴,得到下边这样内容的文件 rtp.data 内容如下

    2024年02月07日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包