Как передать весь трафик Python через http-прокси?

5

Я хочу передать все трафик Python через HTTP-прокси-сервер, я проверил urlib2 и, например, запросит пакеты, их можно настроить для использования прокси-серверов, но как я могу использовать что-то вроде прокси-сервера всей системы для Python для прокси-сервера данные?

  • 0
    Что вы подразумеваете под общесистемным прокси и как вы его настраиваете? Если он есть, вы должны извлечь его и установить в urllib2.
  • 0
    Я имею в виду, что я не хочу использовать прокси только для конкретной библиотеки Python (например, запросов), вместо этого я хочу передать все трафик, происходящий из процесса Python, выполняющего мой скрипт через прокси.
Показать ещё 3 комментария
Теги:
python-2.7
proxy
reverse-proxy

2 ответа

9

Система Linux сначала экспортирует переменные среды, подобные этой

$ export http_proxy="http://<user>:<pass>@<proxy>:<port>"
$ export HTTP_PROXY="http://<user>:<pass>@<proxy>:<port>"

$ export https_proxy="http://<user>:<pass>@<proxy>:<port>"
$ export HTTPS_PROXY="http://<user>:<pass>@<proxy>:<port>"

или в script, которые хотят пройти через прокси

import os

proxy = 'http://<user>:<pass>@<proxy>:<port>'

os.environ['http_proxy'] = proxy 
os.environ['HTTP_PROXY'] = proxy
os.environ['https_proxy'] = proxy
os.environ['HTTPS_PROXY'] = proxy

#your code goes here.............

затем запустите python script

$ python my_script.py

UPDATE

Кроме того, вы можете использовать redsocks с помощью этого инструмента вы можете перенаправить все ваши TCP-соединения в PROXY с аутентификацией или без нее. Но вы должны заботиться, потому что это для всех соединений не только для python.

Системы Windows вы можете использовать такие инструменты, как freecap, proxifier, proxycap и настроить запуск за исполняемым файлом python

  • 1
    офигенный ответ ... спасибо
  • 1
    @efirvida Это не работает в моем случае: stackoverflow.com/questions/48676514/… Я наткнулся на ваш ответ после того, как опубликовал этот вопрос. Я попытался экспортировать прокси, как вы сказали здесь, а затем os.environ ... Но ошибка сохраняется.
Показать ещё 2 комментария
1

По общему признанию, это не совсем то, что вы ищете, но если вы знаете программный источник всего сетевого трафика в вашем коде на Python, вы можете сделать эту прокси-упаковку в самом коде. Чистое решение python предлагается с помощью модуля PySocks в следующей ссылке:

https://github.com/httplib2/httplib2/issues/22

import httplib2
# detect presense of proxy and use env varibles if they exist
pi = httplib2.proxy_info_from_environment()
if pi:
    import socks
    socks.setdefaultproxy(pi.proxy_type, pi.proxy_host, pi.proxy_port)
    socks.wrapmodule(httplib2)    

# now all calls through httplib2 should use the proxy settings
httplib2.Http()

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

https://github.com/Anorov/PySocks

Здесь упоминается, что это не рекомендуется, но, похоже, он работает нормально.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню