mitmproxy 简介
首先说下mitm
是什么意思,mitm
是 Man-in-the-Middle
的缩写,意思是中间人,proxy就是代理了。而 mitmproxy
则是用python
开发的一个免费、开源的中间人代理工具,并且支持使用python api
来进行外挂脚本扩展...
主要包含一下特性
- 拦截 HTTP 和 HTTPS 请求和响应并动态修改它们
- 保存完整的 HTTP 对话,以便以后重播和分析
- 重播 HTTP 对话的客户端
- 重播以前录制的服务器的 HTTP 响应
- 反向代理模式将流量转发到指定的服务器
- macOS 和 Linux 上的透明代理模式
- 使用 Python 对 HTTP 流量进行脚本更改
- SSL/TLS 拦截证书动态生成
- 还有更多...
反正就是非常叼,当然类似的工具有很多,比如基于golang
的go proxy
,只不过python
目前比golang
要火,而且学起来也相对简单一些... 不啰嗦了,具体可以去官网查看:https://mitmproxy.org/
开源地址:https://github.com/mitmproxy/mitmproxy/
安装方式
以下安装命令都是在有python
环境下才可以执行
- Wndows
pip install mitmproxy
- Linux
pip install mitmproxy
- macOS
pip install mitmproxy
或brew install mitmproxy
(这个安装方式需要macOS
先安装brew
才可以)
正题开始
mitmproxy
在Linux、macOS
上安装相对比较简单,一条命令就搞定了,本来以为都是python
、跨平台可以在windows
上也用相同的方式解决,没想到掉坑了...
官方推荐windows
用户使用WSL
环境来安装,具体如何启用和安装Linux
子系统就不多说了,自己百度。
其实WSL
就是一个Linux
系统,只不过是作为子系统而存在,并不是一个完整的Linux
系统,据说WSL
二代是完整的,通过虚拟机实现的..
当我在命令行下执行安装命令的时候,出现了以下错误: distutils.errors.DistutilsPlatformError: Microsoft Visual C++ 14.0 is required.
如图:
解决这个错误的办法就是安装 Visual Studio
,并且要勾选C++开发的相关功能。
再次执行安装命令,又遇到了这个错误:fatal error C1083: 无法打开包括文件: “openssl/opensslv.h”: No such file or directory
ERROR: Failed building wheel for cryptography
ERROR: Could not build wheels for cryptography which use PEP 517 and cannot be installed directly
如图:
这个错误的原因是cryptography
库在windows
上编译失败。
解决的办法就是在windows
上安装OpenSSL
。
在 http://slproweb.com/products/Win32OpenSSL.html 上面下载对应系统的OpenSSL
安装,比如我是64位的window 10就下载Win64 OpenSSL v1.1.1d
,32位的windows系统下载Win32 OpenSSL v1.1.1d
即可。
尽量不要下载 Light 版本的OpenSSL,避免某些文件不全
安装完成后找到OpenSSL
的安装目录,将里面include
文件夹下的 所有文件 复制到python
根目录下的include
文件夹中。
例如我的python
根目录是E:\Python38
,OpenSSL
的安装目录是C:\Program Files\OpenSSL-Win64
然后再将OpenSSL
安装目录里面lib
文件夹中的libcrypto.lib
和libssl.lib
两个链接库文件复制到python
根目录下的libs
文件夹中。
做完这些操作后再执行安装命令就可以安装成功了。如图:
不过有一点需要注意的是,因为windows
中命令行接口和Linux
、macOS
中的终端接口不一样,导致在运行mitmproxy
会出现下面的这个错误:Error: mitmproxy's console interface is not supported on Windows. You can run mitmdump or mitmweb instead.
信息呢也说明了让你使用mitmweb
或mitmdump
替代
mitmproxy
安装的时候会附带mitmweb
和mitmdump
事实证明,mitmweb
也是无法在windows
上运行的。
所以可用的就只有mitmdump
了,如果你有去了解mitmproxy
的话,会发现它们三个核心功能都是一样的,唯一不同的就是在命令行上面的交互。
但是对于我们用这个写外挂脚本来说,只要有一个能用就行了。
评论 (0)