2015-08-24 6 views
0

Мне нужно использовать mitmproxy для python. Я успешно установил его. Однако, когда я бегу mitmproxy команду на моем терминале дает мне трассировки стека, как показано ниже:Выполнение прокси-сервера MITM на Mac

File "/usr/local/bin/mitmproxy", line 9, in load_entry_point('mitmproxy==0.13', 'console_scripts','mitmproxy'()

File "/Library/Python/2.7/site-packages/pkg_resources/init.py", line 558, in load_entry_pointreturn get_distribution(dist).load_entry_point(group, name)

File "/Library/Python/2.7/site-packages/pkg_resources/init.py", line 2682, in load_entry_point return ep.load()

File "/Library/Python/2.7/site-packages/pkg_resources/init.py", line 2355, in load return self.resolve()

File "/Library/Python/2.7/site-packages/pkg_resources/init.py", line 2361, in resolve module = import(self.module_name, fromlist=['name'], level=0)

File "/Library/Python/2.7/site-packages/libmproxy/main.py", line 7, in from . import version, cmdline

File "/Library/Python/2.7/site-packages/libmproxy/cmdline.py", line 5, in from netlib import http

File "/Library/Python/2.7/site-packages/netlib/http.py", line 7, in from . import odict, utils, tcp, http_status

File "/Library/Python/2.7/site-packages/netlib/tcp.py", line 26, in 'TLSv1.2': SSL.TLSv1_2_METHOD, AttributeError: 'module' object has no attribute 'TLSv1_2_METHOD'

Я попытался отладки вопрос через некоторое Googling и выглядит как мне нужно обновить pyOpenSSL.

Чтобы узнать текущую версию моего PyOpen SSL я сделал следующее на приглашении Python и получил ouptut, как показано ниже, чтобы быть 0,13:

>>> import OpenSSL 
>>> print OpenSSL.__version__ 
0.13 

Так что я попытался модернизировать свое pyOpenSSL используя ниже:

sudo pip install --upgrade pyOpenSSL

анс успешно сделал так, как когда я побежал выше снова я получил следующее в первой строке вывода:

Requirement already up-to-date: pyOpenSSL in /Library/Python/2.7/site-packages

Просто, чтобы перекреститься, я пошел по указанному выше пути и нашел PyOpenSSL в качестве PyOpenSSL-0.15.1.dist-info. Так что догадываюсь, PyOpenSSL был фактически обновлен до последней версии.

Однако, когда я снова запустил следующее приглашение на Python, я получил версию снова как 0.13. В идеале я ожидал, что он предоставит обновленную версию сейчас.

>>> import OpenSSL 
>>> print OpenSSL.__version__ 
0.13 

Некоторые блоги предположили, что если у меня установлен виртуальный скрипт, это может помешать описанному выше. Таким образом, я также удалил virtualenv с помощью

sudo pip uninstall virtualenv

Я все еще не могу запустить работу mitmproxy. И когда я запускаю mitmproxy, я все равно получаю ту же ошибку, что и выше.

Пожалуйста, дайте мне знать, что мне не хватает, и как запустить работу mitmproxy.

ответ

0

Так что это происходит еще раз. : P Я мог бы выяснить проблему с вышеупомянутым подходом и решить ее, а сам по себе - КУРС - с помощью некоторых друзей и блогов!

Так кажется, что проблема была на самом деле из-за многих из датированных зависимостей: -

  • Устаревшие OpenSSL -

    current version displayed using OpenSSL version -a Awesome help found @http://javigon.com/2014/04/09/update-openssl-in-osx/ to update OpenSSL and from a friend (https://anantshri.info/) who pointed out the issue itself initially.

  • Устаревшие pyOpenSSL - повышен с использованием, ниже которого, конечно, модернизирована то же самое.

    sudo pip install --upgrade pyOpenSSL

  • Тогда почему нижеследующее показало устаревшую версию?

    import OpenSSL
    print OpenSSL.version
    0.13 because there were 2 different OpenSSLs in the system. One that was installed by pip and the other that was by default present in OSX. Again awesome help found @https://github.com/pyca/pyopenssl/issues/128

некоторые полезные команды, которые были хелпер:

pip show pyOpenSSL - gives as output : Name: pyOpenSSL
Version: 0.15.1
Location: /Library/Python/2.7/site-packages

как часть выходного сигнала - с указанием, что OpenSSL установлен с помощью пип фактически 0,15.1

кросса проверить с помощью:

ls /Library/Python/2.7/site-packages/ | grep OpenSSL - gives as output:
pyOpenSSL-0.15.1.dist-info

Теперь путь ниже также имела другую копию OpenSSL:

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/OpenSSL
and cat version.py
in the above dir gave the below as part of output : version = '0.13.1'

, указывающую, что причина проблемы с оператором импорта показывая устаревшую версию питона ,

And the above itself was the root cause for mitmproxy also not working

потому что mitmproxy не смог использовать последнюю версию OpenSSL.
Так решил проблему, просто заменив OpenSSL в вышеуказанном пути (который устарел) с обновленным одной из /Library/Python/2.7/site-packages/

где

cat ./OpenSSL/version.py gave as output (once again just to cross-verify)
version = '0.15.1'

И теперь в заявлении импорта указана правильная версия OpenSSL.

Uninstalled mitmproxy using sudo pip uninstall mitmproxy - successfully uninstalled. Also uninstalled virtualenv. (not sure of the above 2 was required !)

Переустановлено mitmproxy as sudo pip install mitmproxy - Успешно сделано! И запустил mitmproxy сейчас с терминала с ошибкой! :)

+0

эй, он не работал после этого также. –