mitmproxy 使用笔记
零、背景
我之前写过关于 charles 的使用笔记,为什么现在又要来写同类型的 mitmproxy 工具呢?下面我会娓娓道来他比 charles 多出的强大功能。
一、介绍
mitmproxy 是一个支持 HTTP 和 HTTPS 的抓包程序, 类似 Fiddle、Charles , 只不过它通过 CMD 的形式操作。
mitmproxy 还有两个关联组件:
一个是 mitmdump ,它是 mitmproxy 的命令行接口,利用它可以对接 Python 脚本,实现监听后的处理;
另一个是 mitmweb ,它是一个Web 程序,通过它以清楚地观察到 mitmproxy 捕获的请求。(跟 charles 差不多)
二、安装与配置
1、安装
(1)方法一:通过 pip 安装
pip3 install mitmproxy
会自动附带安装 mitmdump 和mitmweb。
(2)方法二:通过 brew 安装
brew install mitmproxy
2、配置
抓 HTTPS 需要配置 CA 证书。
(1) 电脑端(以 mac 为例)
运行起 mitmdump命令。
然后找到 ~/.mitmproxy/mitmprox-ca-cert.pem 文件,双击,弹出 Keychain Access窗口,找到名为 mitmproxy 的 CA 证书,选择 Always Trust。
(2) 手机端(以 Android 为例)
同样将 ~/.mitmproxy/mitmprox-ca-cert.pem 文件发送给手机,在手机端打开后,填入证书名和点击确认按钮,如下图:

三、使用
下面的例子都以爬手机端为例,记得让手机和 PC 处于同一个局域网。
1、mitmproxy
1、命令行运行 mitmproxy命令,会启动一个代理,默认监听 8080 端口。
2、手机设置里修改网络的代理设置:

3、现在就可以在命令行里查看经过的网络请求了
4、也可查看请求的具体详情:

5、还有编辑、重发功能
2、mitmweb
可以理解成界面版的 mitmproxy。
略。
3、mitmdump
上面介绍的功能其实 Fiddle、 Charles 也有,那么mitmproxy 的优势何在哪?
这就要提到 mitmdump 了,有了它我们可以直接对接 Python 脚本对请求进行处理。比如对数据的解析、存储、修改等。
示例 demo:
from mitmproxy import ctx
def request(flow):
# 获取
request = flow.request
# 修改
request.headers['User-Agent'] = 'MitmProxy'
# 日志输出
print(request.host)
ctx.log.info(request.host) # 颜色同上
ctx.log.warn(request.host) # 颜色:黄
ctx.log.error(request.host) # 颜色:红
def response(flow):
response = flow.response
ctx.log.info(str(response.status_code))
详细文档:https://mitmproxy.readthedocs.io/en/v2.0.2/mitmdump.html
4、拓展 —— httpbin.org
通过 mitmdump 对 request 做了修改,想要看修改后达成的效果,推荐客户端去访问这个网址:http://httpbin.org/get 即可知晓。
四、坑
1、爬的成功率不高,失败的会报错 :Cannot establish TLS with client……
会是 https 抓不到的问题?但我的电脑和手机端的 CA 证书都装了呀,费解。
解决方案:待解决
参考资料
《python 3 网络爬虫开发实践》
mitmproxy 使用笔记的更多相关文章
- (转)MitmProxy+APPnium安装使用
MitmProxy+APPnium安装使用 2019年08月19日 11:09:48 jiageibuuuyi 阅读数 61更多 分类专栏: python学习笔记 版权声明:本文为博主原创文章,遵 ...
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- NET Core-学习笔记(三)
这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...
- springMVC学习笔记--知识点总结1
以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
随机推荐
- supersocket/SocketEngin/BootstrapFactory.cs 详解
using System; using System.Collections.Generic; using System.Linq; using System.Text; using SuperSoc ...
- CSS3选择器归类整理
CSS3选择器归类整理(附CSS优先级要点) CSS是用于网页设计可用的最强大的工具之一.使用它我们可以在几分钟内改变一个网站的界面,而不用改变页面的标签.在深入研究CSS选择器之前,我们应该先搞懂C ...
- Nginx安装、默认虚拟主机、Nginx用户认证和域名重定向
6月7日任务 12.6 Nginx安装12.7 默认虚拟主机12.8 Nginx用户认证12.9 Nginx域名重定向 扩展nginx.conf 配置详解 http://www.ha97.com/51 ...
- synchronized被这么问,谁能受得了
synchronized是面试中经常会被问到的知识点,相关的问题点也很多,问题答案涉及的知识点也很多,有经验的面试官就会顺着你的答案不断追问一下,下面的对话场景就是相关面试题的连环炮. 面试官:说一下 ...
- SpringBoot使用拦截器、过滤器、监听器
目录 ## 过滤器 PS: 原文链接https://www.cnblogs.com/haixiang/p/12000685.html,转载请注明出处 过滤器简介 过滤器的使用 拦截器 拦截器介绍 使用 ...
- 基于antd封装一个高可用form组件 减少cv代码导致的bug
引言 在开发中台过程中 我们的原型中有很多表单,antd有表单组件,但是粒度比较细,就单纯组件而言,无可厚非,但是在开发过程中,可能会造成代码不够聚合,有些表单公共逻辑无法提取,copy paste比 ...
- Table表格滑过当前项[当前行][当前列]对应高亮
效果演示图: JS 代码如下: function TableHover($table){ $table.mouseenter(function(event) { va ...
- 第五章 初始jQuery
jQuery与JavaScript: jQuery的用途: 访问和操作DOM元素: 控制页面样式: 对页面事件的处理: 方便地使用jQuery插件: 与Ajax技术的完美结合: jQuery的优势: ...
- 【解决】OCI runtime exec failed......executable file not found in $PATH": unknown
[问题]使用docker exec + sh进入容器时报错 [root@localhost home]# docker exec -it container-test bash OCI runtime ...
- A.Two Rival Students
题目:两个竞争的学生 链接:(两个竞争的对手)[https://codeforces.com/contest/1257/problem/A] 题意:有n个学生排成一行.其中有两个竞争的学生.第一个学生 ...