Запуск прокси-сервера MITM на Mac

Мне нужно использовать mitmproxy Python. Я успешно установил его. Однако, когда я запускаю команду mitmproxy на своем терминале, она дает мне трассировку стека, как показано ниже:

Файл "/usr/local/bin/mitmproxy", строка 9, в load_entry_point('mitmproxy==0.13', 'console_scripts','mitmproxy'()

Файл "/Library/Python/2.7/site -packages/pkg_resources/init.py", строка 558, в load_entry_pointreturn get_distribution(dist).load_entry_point(group, name)

File "/Library/Python/2.7/site- packages/pkg_resources/init.py", строка 2682, в load_entry_point возвращает ep.load()

File "/Library/Python/2.7/site-packages/pkg_resources/init.py", строка 2355, при загрузке return self.resolve()

File "/Library/Python/2.7/site-packages/pkg_resources/init .py", строка 2361, модуль разрешения = импорт(self.module_name, fromlist=['имя'], уровень=0)

Файл "/Library/Python/2.7/site-packages/libmproxy/main.py", строка 7, из .import version, 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

Файл "/Library/Python/2.7/site-packages/netlib/tcp.py", строка 26, в "TLSv1.2": SSL.TLSv1

>>> import OpenSSL
>>> print OpenSSL.__version__
0.13
METHOD, AttributeError: Объект «модуль» не имеет атрибута «TLSv1
>>> import OpenSSL
>>> print OpenSSL.__version__
0.13
METHOD»

Я попытался отладить проблему с помощью поиска в Google и, похоже, мне нужно было обновить pyOpenSSL.

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

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

Поэтому я попытался обновить свой pyOpenSSL, используя следующее:

sudo pip установить --обновить pyOpenSSL

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

Требование уже обновлено: pyOpenSSL в /Library/Python/2.7/site-packages

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

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

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

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

sudo pip удалить virtualenv

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

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


person qre0ct    schedule 24.08.2015    source источник


Ответы (1)


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

Похоже, что проблема была на самом деле из-за МНОГИХ устаревших зависимостей: -

  • Устаревший OpenSSL —
    #P3#
  • Устаревший pyOpenSSL - обновлен с использованием приведенного ниже, который, конечно же, обновил то же самое.
    #P4#
  • Тогда почему ниже все еще показана устаревшая версия?
    #P5#

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

pip show pyOpenSSL - дает в качестве вывода: Имя: pyOpenSSL
Версия: 0.15.1
Расположение: /Library/Python/2.7/site-packages

как часть вывода - указывает, что OpenSSL, установленный с использованием pip, на самом деле 0.15.1

перекрестная проверка с использованием:

ls /Library/Python/2.7/site-packages/ | grep OpenSSL - выводит:
pyOpenSSL-0.15.1.dist-info

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

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/OpenSSL
и cat version.py
в указанном выше каталоге дали следующее как часть вывода: version< /сильный> = '0.13.1'

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

И это само по себе было основной причиной того, что mitmproxy также не работал.

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

куда

cat ./OpenSSL/version.py дал в качестве вывода (еще раз просто для перекрестной проверки)
version = '0.15.1'

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

Удалил mitmproxy с помощью sudo pip uninstall mitmproxy — успешно удалил. Также удалил virtualenv. (не уверен, что из вышеперечисленного 2 требовалось!)

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

person qre0ct    schedule 24.08.2015