Как настроить прокси для запросов.get() для работы в Pycharm?

#python #proxy #python-requests #pycharm

#python #прокси #python-запросы #pycharm

Вопрос:

Я пытаюсь использовать функцию запросов из PyCharm.

 import requests
url = 'https://www.google.com'
ProxyDict = {"http_proxy":"http://proxy-us.MyCompany.com:911","https_proxy":"http://proxy-us.MyCompany.com:912"}
o = requests.get(url,proxies = ProxyDict)
print(o.status_code)
  

Это дает мне

 requests.exceptions.ConnectionError: HTTPSConnectionPool(host='www.google.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000027CBF508B00>: Failed to establish a new connection: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond',))
  

Но когда я попытался запустить следующее из cmd, это сработало.

 $set http_proxy=http://proxy-us.MyCompany.com:911
$set https_proxy=http://proxy-us.MyCompany.com:912
$ python ip_locator.py
200
  

Я попробовал следующее:

  1. настройка системных переменных env с именами HTTP_PROXY и HTTPS_PROXY
  2. в Pycharm Ctrl Alt S —> HTTP прокси -> Автоматическая настройка прокси URL: http:// proxy-us.MyCompany.com:911

Но ни один из моих методов не был успешным в настройке прокси в PyCharm. Есть предложения?

Ответ №1:

Кажется, я нашел решение.

Pycharm -> Выполнить -> Изменить конфигурацию -> Переменная среды

 PYTHONUNBUFFERED=1;http_proxy=http://proxy-us.MyCompany.com:911;https_proxy=http://proxy-us.MyCompany.com:912 
  

Ответ №2:

Вы передаете неправильные ключи словаря requests.get .

Согласно документам, ключи должны быть названы http и https : https://requests.readthedocs.io/en/master/user/advanced/#proxies

Пример из документов:

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

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

Но поскольку прокси также могут быть настроены с помощью переменных среды, ваш второй подход работает: вы устанавливаете http_proxy переменные и https_proxy переменные среды. И requests принять их в качестве конфигурации прокси.

Комментарии:

1. Правильно. Отличный улов. Спасибо