Python3爬虫mitmproxy的安装步骤


Posted in Python onJuly 29, 2020

mitmproxy是一个支持HTTP和HTTPS的抓包程序,类似Fiddler、Charles的功能,只不过它通过控制台的形式操作。

此外,mitmproxy还有两个关联组件,一个是mitmdump,它是mitmproxy的命令行接口,利用它可以对接Python脚本,实现监听后的处理;另一个是mitmweb,它是一个Web程序,通过它以清楚地观察到mitmproxy捕获的请求。

本节中,我们就来了解一下mitmproxy、mitmdump和mitmweb的安装方式。

1. 相关链接

GitHub:https://github.com/mitmproxy/mitmproxy

官方网站:https://mitmproxy.org

PyPI:https://pypi.python.org/pypi/mitmproxy

官方文档:http://docs.mitmproxy.org

mitmdump脚本:http://docs.mitmproxy.org/en/stable/scripting/overview.html

下载地址:https://github.com/mitmproxy/mitmproxy/releases

DockerHub:https://hub.docker.com/r/mitmproxy/mitmproxy

2. pip安装

最简单的安装方式还是使用pip,直接执行如下命令即可安装:

pip3 install mitmproxy

这是最简单和通用的安装方式,执行完毕之后即可完成mitmproxy的安装,另外还附带安装了mitmdump和mitmweb这两个组件。如果不想用这种方式安装,也可以选择后面列出的专门针对各个平台的安装方式或者Docker安装方式。

3. Windows下的安装

可以到GitHub上的Releases页面(链接为:https://github.com/mitmproxy/mitmproxy/releases/)获取安装包,如图1-59所示。

Python3爬虫mitmproxy的安装步骤

图1-59 下载页面

比如,当前的最新版本为2.0.2,则可以选择下载Windows下的exe安装包mitmproxy-2.0.2-windows-installer.exe,下载后直接双击安装包即可安装。

注意,在Windows上不支持mitmproxy的控制台接口,但是可以使用mitmdump和mitmweb。

4. Linux下的安装

在Linux下,可以下载编译好的二进制包(下载地址https://github.com/mitmproxy/mitmproxy/releases/),此发行包一般是最新版本,它包含了最新版本的mitmproxy和内置的Python 3环境,以及最新的OpenSSL环境。

如果你的环境里没有Python 3和OpenSSL环境,建议使用此种方式安装。

下载之后,需要解压并将其配置到环境变量:

tar -zxvf mitmproxy-2.0.2-linux.tar.gz
sudo mv mitmproxy mitmdump mitmweb /usr/bin

这样就可以将3个可执行文件移动到了/usr/bin目录。而一般情况下,/usr/bin目录都已经配置在了环境变量下,所以接下来可以直接调用这3个工具了。

5. Mac下的安装

Mac下的安装非常简单,直接使用Homebrew即可,命令如下:

brew install mitmproxy

执行命令后,即可完成mitmproxy的安装。

6. Docker安装

mitmproxy也支持Docker,其DockerHub的地址为https://hub.docker.com/r/mitmproxy/mitmproxy/。

在Docker下,mitmproxy的安装命令为:

docker run --rm -it -p 8080:8080 mitmproxy/mitmproxy mitmdump

这样就在8080端口上启动了mitmproxy和mitmdump。

如果想要获取CA证书,可以选择挂载磁盘选项,命令如下:

docker run --rm -it -v ~/.mitmproxy:/home/mitmproxy/.mitmproxy -p 8080:8080 mitmproxy/mitmproxy mitmdump

这样就可以在~/.mitmproxy目录下找到CA证书。

另外,还可以在8081端口上启动mitmweb,命令如下:

docker run --rm -it -p 8080:8080 -p 127.0.0.1:8081:8081 mitmproxy/mitmproxy mitmweb

更多启动方式可以参考Docker Hub的安装说明。

7. 证书配置

对于mitmproxy来说,如果想要截获HTTPS请求,就需要设置证书。mitmproxy在安装后会提供一套CA证书,只要客户端信任了mitmproxy提供的证书,就可以通过mitmproxy获取HTTPS请求的具体内容,否则mitmproxy是无法解析HTTPS请求的。

首先,运行以下命令产生CA证书,并启动mitmdump:

mitmdump

接下来,我们就可以在用户目录下的.mitmproxy目录里面找到CA证书,如图1-60所示。

Python3爬虫mitmproxy的安装步骤

图1-60 证书文件

证书一共5个,表1-1简要说明了这5个证书。

表1-1 5个证书及其说明

Python3爬虫mitmproxy的安装步骤

下面我们介绍一下Windows、Mac、iOS和Android平台下的证书配置过程。

Windows

双击mitmproxy-ca.p12,就会出现导入证书的引导页,如图1-61所示。

Python3爬虫mitmproxy的安装步骤

图1-61 证书导入向导

直接点击“下一步”按钮即可,会出现密码设置提示,如图1-62所示。

Python3爬虫mitmproxy的安装步骤

图1-62 密码设置提示

这里不需要设置密码,直接点击“下一步”按钮即可。

接下来需要选择证书的存储区域,如图1-63所示。这里点击第二个选项“将所有的证书都放入下列存储”,然后点击“浏览”按钮,选择证书存储位置为“受信任的根证书颁发机构”,接着点击“确定”按钮,然后点击“下一步”按钮。

Python3爬虫mitmproxy的安装步骤

图1-63 选择证书存储区域

最后,如果有安全警告弹出,如图1-64所示,直接点击“是”按钮即可。

Python3爬虫mitmproxy的安装步骤

图1-64 安全警告

这样就在Windows下配置完CA证书了。

Mac

Mac下双击mitmproxy-ca-cert.pem即可弹出钥匙串管理页面,然后找到mitmproxy证书,打开其设置选项,选择“始终信任”即可,如图1-65所示。

Python3爬虫mitmproxy的安装步骤

图1-65 证书配置

iOS

将mitmproxy-ca-cert.pem文件发送到iPhone上,推荐使用邮件方式发送,然后在iPhone上可以直接点击附件并识别安装,如图1-66所示。

Python3爬虫mitmproxy的安装步骤

图1-66 证书安装页面

点击“安装”按钮之后,会跳到安装描述文件的页面,点击“安装”按钮,此时会有警告提示,如图1-67所示。

Python3爬虫mitmproxy的安装步骤

图1-67 安装警告页面

继续点击右上角的“安装”按钮,安装成功之后会有已安装的提示,如图1-68所示。

Python3爬虫mitmproxy的安装步骤

图1-68 安装成功页面

如果你的iOS版本是10.3以下的话,此处信任CA证书的流程就已经完成了。

如果你的iOS版本是10.3及以上版本,还需要在“设置”→“通用”→“关于本机”→“证书信任设置”将mitmproxy的完全信任开关打开,如图1-69所示。此时,在iOS上配置信任CA证书的流程就结束了。

Python3爬虫mitmproxy的安装步骤

图1-69 证书信任设置

Android

在Android手机上,同样需要将证书mitmproxy-ca-cert.pem文件发送到手机上,例如直接复制文件。

接下来,点击证书,便会出现一个提示窗口,如图1-70所示。

Python3爬虫mitmproxy的安装步骤

图1-70 证书安装页面

这时输入证书的名称,然后点击“确定”按钮即可完成安装。

到此这篇关于Python3爬虫mitmproxy的安装步骤的文章就介绍到这了,更多相关Python3爬虫mitmproxy的安装内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python判断给定的字符串是否是有效日期的方法
May 13 Python
python安装oracle扩展及数据库连接方法
Feb 21 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
Jul 13 Python
python执行CMD指令,并获取返回的方法
Dec 19 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
对Python 中矩阵或者数组相减的法则详解
Aug 26 Python
TensorFlow加载模型时出错的解决方式
Feb 06 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
Apr 27 Python
Python基于yaml文件配置logging日志过程解析
Jun 23 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
May 19 Python
python使用BeautifulSoup 解析HTML
Apr 24 Python
Python使用jpype模块调用jar包过程解析
Jul 29 #Python
Python 防止死锁的方法
Jul 29 #Python
Python定义一个Actor任务
Jul 29 #Python
Python如何重新加载模块
Jul 29 #Python
Python加速程序运行的方法
Jul 29 #Python
如何在python中判断变量的类型
Jul 29 #Python
Python中的With语句的使用及原理
Jul 29 #Python
You might like
教你如何把一篇文章按要求分段
2006/10/09 PHP
php microtime获取浮点的时间戳
2010/02/21 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
php实现微信支付之现金红包
2018/05/30 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
2015/07/01 Javascript
常用jQuery代码分享
2015/07/14 Javascript
JavaScript位移运算符(无符号) >>> 三个大于号 的使用方法详解
2016/03/31 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
python pickle 和 shelve模块的用法
2013/09/16 Python
Python删除空文件和空文件夹的方法
2015/07/14 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
2019/06/19 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
什么是类的返射机制
2016/02/06 面试题
几个常见的消息中间件(MOM)
2014/01/08 面试题
2015年公司保安年终工作总结
2015/05/14 职场文书
十七岁的单车观后感
2015/06/12 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis