python之windows上安装mitmproxy遇到的问题和解决办法

kali
2020-03-12 / 0 评论 / 4,092 阅读 / 正在检测是否收录...

mitmproxy 简介

首先说下mitm是什么意思,mitmMan-in-the-Middle 的缩写,意思是中间人,proxy就是代理了。而 mitmproxy则是用python开发的一个免费、开源的中间人代理工具,并且支持使用python api来进行外挂脚本扩展...

主要包含一下特性

  1. 拦截 HTTP 和 HTTPS 请求和响应并动态修改它们
  2. 保存完整的 HTTP 对话,以便以后重播和分析
  3. 重播 HTTP 对话的客户端
  4. 重播以前录制的服务器的 HTTP 响应
  5. 反向代理模式将流量转发到指定的服务器
  6. macOS 和 Linux 上的透明代理模式
  7. 使用 Python 对 HTTP 流量进行脚本更改
  8. SSL/TLS 拦截证书动态生成
  9. 还有更多...

反正就是非常叼,当然类似的工具有很多,比如基于golanggo proxy,只不过python目前比golang要火,而且学起来也相对简单一些... 不啰嗦了,具体可以去官网查看:https://mitmproxy.org/
开源地址:https://github.com/mitmproxy/mitmproxy/

安装方式

以下安装命令都是在有python环境下才可以执行
  1. Wndows pip install mitmproxy
  2. Linux pip install mitmproxy
  3. macOS pip install mitmproxybrew install mitmproxy(这个安装方式需要macOS先安装brew才可以)

正题开始

mitmproxyLinux、macOS上安装相对比较简单,一条命令就搞定了,本来以为都是python、跨平台可以在windows上也用相同的方式解决,没想到掉坑了...

官方推荐windows用户使用WSL环境来安装,具体如何启用和安装Linux子系统就不多说了,自己百度。

其实WSL就是一个Linux系统,只不过是作为子系统而存在,并不是一个完整的Linux系统,据说WSL二代是完整的,通过虚拟机实现的..

当我在命令行下执行安装命令的时候,出现了以下错误:
distutils.errors.DistutilsPlatformError: Microsoft Visual C++ 14.0 is required.
如图:
iShot2020-03-12下午11.45.57.png
解决这个错误的办法就是安装 Visual Studio ,并且要勾选C++开发的相关功能。
iShot2020-03-12下午11.58.26.png

再次执行安装命令,又遇到了这个错误:
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
如图:
iShot2020-03-13上午12.22.07.png
这个错误的原因是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即可。
iShot2020-03-13上午12.29.51.png

尽量不要下载 Light 版本的OpenSSL,避免某些文件不全

安装完成后找到OpenSSL的安装目录,将里面include文件夹下的 所有文件 复制到python根目录下的include文件夹中。
例如我的python根目录是E:\Python38OpenSSL的安装目录是C:\Program Files\OpenSSL-Win64

然后再将OpenSSL安装目录里面lib文件夹中的libcrypto.liblibssl.lib两个链接库文件复制到python根目录下的libs文件夹中。

做完这些操作后再执行安装命令就可以安装成功了。如图:
iShot2020-03-13上午12.53.41.png

不过有一点需要注意的是,因为windows中命令行接口和LinuxmacOS中的终端接口不一样,导致在运行mitmproxy会出现下面的这个错误:
Error: mitmproxy's console interface is not supported on Windows. You can run mitmdump or mitmweb instead.

信息呢也说明了让你使用mitmwebmitmdump替代

mitmproxy安装的时候会附带mitmwebmitmdump

事实证明,mitmweb也是无法在windows上运行的。
所以可用的就只有mitmdump了,如果你有去了解mitmproxy的话,会发现它们三个核心功能都是一样的,唯一不同的就是在命令行上面的交互。

但是对于我们用这个写外挂脚本来说,只要有一个能用就行了。

好了,以上就是我所遇到的问题,并且都相应解决了,希望可以帮到你。

0

评论 (0)

取消