我需要使用python的mitmproxy。我已成功安装它。但是,当我在终端上运行mitmproxy命令时,它会给我一个如下所示的堆栈跟踪:
文件" / usr / local / bin / mitmproxy",第9行,在load_entry_point中(' mitmproxy == 0.13',' console_scripts',&# 39; mitmproxy'()
文件" /Library/Python/2.7/site-packages/pkg_resources/ init .py",第558行,在load_entry_pointreturn get_distribution(dist).load_entry_point(group,name)
文件" /Library/Python/2.7/site-packages/pkg_resources/ init .py",第2682行,在load_entry_point中返回ep.load()
文件" /Library/Python/2.7/site-packages/pkg_resources/ init .py",第2355行,在加载中返回self.resolve()
文件" /Library/Python/2.7/site-packages/pkg_resources/ init .py",第2361行,在resolve module = import (self。 module_name,fromlist = [' name '],level = 0)
文件" /Library/Python/2.7/site-packages/libmproxy/main.py" ;,第7行,来自。导入版本,cmdline
文件" /Library/Python/2.7/site-packages/libmproxy/cmdline.py" ;,第5行,来自netlib import http
文件" /Library/Python/2.7/site-packages/netlib/http.py" ;,第7行,来自。 import odict,utils,tcp,http_status
File" /Library/Python/2.7/site-packages/netlib/tcp.py" ;,第26行,在' TLSv1.2':SSL.TLSv1_2_METHOD,AttributeError:'模块'对象没有属性' TLSv1_2_METHOD'
我尝试通过一些谷歌搜索调试问题,看起来我需要升级我的pyOpenSSL。
要了解我的PyOpen SSL的当前版本,我在Python提示符下执行了以下操作,并获得如下所示的ouptut为0.13:
>>> import OpenSSL
>>> print OpenSSL.__version__
0.13
所以我尝试使用下面的方法升级我的pyOpenSSL:
sudo pip install --upgrade pyOpenSSL
ans成功完成了,因为当我再次运行上面的内容时,我在输出的第一行收到了以下内容:
要求已经是最新的:/Library/Python/2.7/site-packages中的pyOpenSSL
只是交叉验证我去了上面的路径,发现PyOpenSSL目录为PyOpenSSL-0.15.1.dist-info。所以我猜测PyOpenSSL实际上已升级到最新版本。
然而,当我再次在Python提示符下运行时,我再次收到该版本为0.13。理想情况下,我期待它现在提供更新版本。
>>> import OpenSSL
>>> print OpenSSL.__version__
0.13
有些博客建议如果我安装了virtualevn,它可能会干扰上述情况。所以我也使用
卸载了virtualenvsudo pip卸载virtualenv
我仍然无法让mitmproxy运行。当我运行mitmproxy时,我仍然得到与上面相同的错误。
请让我知道我错过了什么,以及如何让mitmproxy运行。
答案 0 :(得分:0)
所以它又发生了。 :P我可以通过上述方法及其解决方案来解决问题 - 我自己 - 在一些朋友和博客的帮助下进行的课程!
所以看来问题实际上是因为很多过时的依赖: -
使用OpenSSL版本-a显示的当前版本 很棒的帮助找到@ http://javigon.com/2014/04/09/update-openssl-in-osx/来更新OpenSSL,以及最初指出问题的朋友(https://anantshri.info/)。
sudo pip install --upgrade pyOpenSSL
导入OpenSSL
打印OpenSSL。版本
0.13 因为系统中有2个不同的OpenSSL。一个是由pip安装的,另一个是默认存在于OSX中的。再次找到了很棒的帮助@ https://github.com/pyca/pyopenssl/issues/128
帮助程序的一些有用命令是:
pip show pyOpenSSL - 给出输出: 名称:pyOpenSSL
版本:0.15.1
地点:/ Library /Python/2.7/site-packages
作为输出的一部分 - 表示使用pip安装的OpenSSL实际上是0.15.1
使用以下方式进行交叉验证:
ls /Library/Python/2.7/site-packages/ | grep OpenSSL - 输出:
pyOpenSSL-0.15.1.dist-信息
现在,下面的路径还有另一个OpenSSL副本:
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/OpenSSL
和cat version.py
在上面的dir中给出了以下作为输出的一部分: 版本 ='0.13.1'
指示导入语句的问题原因显示过时的python版本。
而上述本身就是mitmproxy也无法正常工作的根本原因
因为mitmproxy无法在OpenSSL上使用最新版本。
只需用/Library/Python/2.7/site-packages /
其中
cat ./OpenSSL/version.py给出了输出(再一次只是交叉验证)
版本 ='0.15.1'
现在import语句报告了正确版本的OpenSSL。
使用sudo pip卸载mitmproxy卸载了mitmproxy - 已成功卸载。还卸载了virtualenv。 (不确定上面的2是必需的!)
重新安装mitmproxy作为sudo pip install mitmproxy - 已成功完成! 现在从终端运行mitmproxy并没有出现故障! :)