Подтвердить что ты не робот

Запросы: как отключить/обойти прокси-сервер

Я получаю URL-адрес с:

r = requests.get("http://myserver.com")

Как я вижу в "access.log" "myserver.com", используется прокси-сервер клиентской системы. Но я хочу отключить использование прокси-серверов вообще с помощью requests.

4b9b3361

Ответ 1

Единственный способ, с помощью которого я в настоящее время осведомлен о отключении прокси, - это следующее:

  • Создать сеанс
  • Установите session.trust_env в False
  • Создайте свой запрос, используя этот сеанс
import requests

session = requests.Session()
session.trust_env = False

response = session.get('http://www.stackoverflow.com')

Это основано на этом комментарии Lukasa и (ограниченной) документации для requests.Session.trust_env.

Примечание. Настройка trust_env - False также игнорирует следующее:

  • Информация об аутентификации от .netrc (code)
  • Пакеты CA, определенные в REQUESTS_CA_BUNDLE или CURL_CA_BUNDLE (code)

Если вы только хотите отключить прокси-серверы для определенного домена (например, localhost), вы можете использовать переменную среды NO_PROXY

import os
import requests

os.environ['NO_PROXY'] = 'stackoverflow.com'

response = requests.get('http://www.stackoverflow.com')

Ответ 2

Вы можете выбрать прокси для каждого запроса. Из документов:

import requests

proxies = {
  "http": "http://10.10.1.10:3128",
  "https": "http://10.10.1.10:1080",
}

requests.get("http://example.org", proxies=proxies)

Итак, чтобы отключить прокси-сервер, просто установите для каждого значение None:

import requests

proxies = {
  "http": None,
  "https": None,
}

requests.get("http://example.org", proxies=proxies)

Ответ 3

запрашивает библиотеку в отношении переменных среды. http://docs.python-requests.org/en/latest/user/advanced/#proxies

Поэтому попробуйте удалить переменные среды HTTP_PROXY и HTTPS_PROXY.

import os
for k in list(os.environ.keys()):
    if k.lower().endswith('_proxy'):
        del os.environ[k]