Error tunnel connection failed 407 proxy authentication required

Hello Requests Team, We found that the proxy setting is not working. We tried every possible proxy auth, only one success: using cntlm + username + password, like: http://username:password@127.0.0....

I am using cntlm and this works (@Kenith, @blresells, this may be a workaround):

import urllib3
p = urllib3.ProxyManager(
    "http://127.0.0.1:3128/",
    proxy_headers={'Proxy-Connection': 'Keep-Alive'})
r = p.request('GET', 'https://www.google.com')

This does not, and reads exactly like the python requests CONNECT in wireshark:

import urllib3
p = urllib3.ProxyManager(
    "http://127.0.0.1:3128/",
    proxy_headers={})
r = p.request('GET', 'https://www.google.com')

The output in the second case is:

Traceback (most recent call last):
  File "/srv/miniconda/envs/apimaxar/lib/python3.9/site-packages/urllib3/connectionpool.py", line 696, in urlopen
    self._prepare_proxy(conn)
  File "/srv/miniconda/envs/apimaxar/lib/python3.9/site-packages/urllib3/connectionpool.py", line 964, in _prepare_proxy
    conn.connect()
  File "/srv/miniconda/envs/apimaxar/lib/python3.9/site-packages/urllib3/connection.py", line 366, in connect
    self._tunnel()
  File "/srv/miniconda/envs/apimaxar/lib/python3.9/http/client.py", line 907, in _tunnel
    raise OSError(f"Tunnel connection failed: {code} {message.strip()}")
OSError: Tunnel connection failed: 407 Proxy Authentication Required

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/a/Desktop/git/teste-api-maxar/teste.py", line 35, in <module>
    r = p.request('GET', 'https://www.google.com')
  File "/srv/miniconda/envs/apimaxar/lib/python3.9/site-packages/urllib3/request.py", line 74, in request
    return self.request_encode_url(
  File "/srv/miniconda/envs/apimaxar/lib/python3.9/site-packages/urllib3/request.py", line 96, in request_encode_url
    return self.urlopen(method, url, **extra_kw)
  File "/srv/miniconda/envs/apimaxar/lib/python3.9/site-packages/urllib3/poolmanager.py", line 532, in urlopen
    return super(ProxyManager, self).urlopen(method, url, redirect=redirect, **kw)
  File "/srv/miniconda/envs/apimaxar/lib/python3.9/site-packages/urllib3/poolmanager.py", line 375, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "/srv/miniconda/envs/apimaxar/lib/python3.9/site-packages/urllib3/connectionpool.py", line 783, in urlopen
    return self.urlopen(
  File "/srv/miniconda/envs/apimaxar/lib/python3.9/site-packages/urllib3/connectionpool.py", line 783, in urlopen
    return self.urlopen(
  File "/srv/miniconda/envs/apimaxar/lib/python3.9/site-packages/urllib3/connectionpool.py", line 783, in urlopen
    return self.urlopen(
  File "/srv/miniconda/envs/apimaxar/lib/python3.9/site-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "/srv/miniconda/envs/apimaxar/lib/python3.9/site-packages/urllib3/util/retry.py", line 574, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.google.com', port=443): Max retries exceeded with url: / (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 407 Proxy Authentication Required')))

So, the real issue is that:

  1. Python requests does not send the ‘Proxy-Connection’: ‘keep-alive’ header by default, like Firefox and curl do (also does not send the Host and the User-Agent, but for my setup that is not important).
  2. As far as I know, there is no way for the user to add a proxy_headers to a python requests session.

There is a simple workaround, though, which is to revert to urllib3 which exposes lower level funcionality.

Be The First To Get Support Updates

Want to know about the latest technical content and software updates?

Error Message

Attempts to run a Python script and log in to Portal for ArcGIS fail, and return the following error:

Error:
OSError: Tunnel connection failed: 407 Proxy Authorization Required

The following shows a sample code that may result in the error:

import arcgis

con = arcgis.gis.GIS(url="https://TEST.maps.arcgis.com", username="user1") 

con.map()

Cause

There are two possible causes:

  • The connection to the selected portal is blocked by the proxy on the network. This occurs if the connection uses a custom proxy, for example, a company public key infrastructure with corresponding certificates.
  • The script is unable to automatically recognize the proxy used by the Portal for ArcGIS and ArcGIS Server configured certificate.

Solution or Workaround

Use the following solutions to fix the issue:

Add the following ArcGIS Online domains to the allowed list:

  • https://*.arcgis.com
  • https://*.arcgisonline.com
  • https://*.blob.core.windows.net
  • https://*.esri.com

Declare the proxy_port parameter

To enable the script to recognize the custom port, the proxy_port parameter must be declared and added to the full script. The following shows the sample code:

  • For ArcGIS Online login:
gis = GIS(proxy_host='127.0.0.1', proxy_port=8888)
  • For a secured proxy:
gis = GIS(url="https://arcgis.com", username="user1", password="password1", proxy_host="<username>:<password>@<proxyname>”, proxy_port=8888, verify_cert=False)

Related Information

  • ArcGIS Server: Configure a forward server with ArcGIS Server
  • Portal for ArcGIS: Configure your portal to use a forward proxy server

Last Published: 9/25/2020

Article ID: 000022198

Software: ArcGIS API for Python 1.8.2, 1.8.1, 1.8.0, 1.7.1, 1.7.0, 1.6.1, 1.6 ArcGIS GeoAnalytics Server 10.7.1, 10.7, 10.6.1, 10.6, 10.5.1, 10.5 ArcGIS GeoEvent Server 10.7.1, 10.7, 10.6.1, 10.6, 10.5.1, 10.5 ArcGIS Server 10.7.1, 10.7, 10.6.1, 10.6, 10.5.1, 10.5 Portal for ArcGIS 10.7.1, 10.7, 10.6.1, 10.6, 10.5.1, 10.5 ArcGIS Image Server 10.7.1, 10.7, 10.6.1, 10.6, 10.5.1, 10.5

Что такое Proxy Authentication Required или Error 407? – это сбой в работе прокси сервисов, которые используются в программах VPN, например, FriGate. Кроме того, ошибка 407 может возникнуть в ряде других программ, которые подключаются к сети через прокси лист: Visual Studio, Key Collector и другие. Однако, наибольшее беспокойство доставляет ошибка HTTP 407 при работе с бесплатными VPN сервисами.

Как исправить Error 407 Proxy Authentication Required? Как настроить компьютер, чтобы решить проблему? Есть ли аналоги программ, которые работают без Proxy? Что делать, если status code 407 Proxy Authentication Required не исчезает? К слову, эта ошибка очень похожа на ошибку 401, только в этом случае ошибка на вашей стороне, а не на стороне сервера. Посмотрите подробный отчет для действий.

Вы спокойно ищите нужную информацию в своем браузере и тут натыкаетесь на ошибку 407. Окошко может иметь разные уведомления, но чаще всего все сводится к следующему: «The request with HTTP status 407: Proxy Authentication Required”. Данное уведомление сообщает, что между вами и сервером возникла ошибка. Причем ошибка 407 возникает только на стороне клиента, т.е. пользователя.

Ошибка 407 FriGate

Ошибка 407 FriGate

Чаще всего проблема возникает при использовании плагина FriGate – дополнения, которое работает с помощью прокси. Для чего оно у вас стоит? Скорее всего, вы пытаетесь зайти на сайт, который заблокирован провайдером, роскомнадзором или другими органами, которые контролируют интернет трафик. FriGate – это посредник между вашим браузером и сайтом, который вы хотите открыть. Работает он по принципу VPN. Подключаясь к нему, вы создаете видимость подключения из другой страны.

Например, вы хотите попасть на сайт, который закрыт провайдером. Устанавливая FriGate вы подменяете свое настоящее местоположение фиктивным. Провайдер видит трафик, но обращение идет на посторонний сервер. Не будем углубляться в детали – суть одна, FriGate не работает, и вы видите ошибку 407. В чистом браузере ошибка http 407 возникнуть просто не может. Она возникает только ввиду не работающего соединения с прокси.

Что делать, если в браузере возникла ошибка 407? Как устранить Error 407 Authentication Required? Ниже список шагов, которые актуальны именно для проблемы, которая возникла на стороне браузера.

  • Если вы использовали платный прокси – выйдите из аккаунта и войдите снова;
  • Если вы использовали FriGate – отключите плагин и удалите его из браузера. Затем установите более свежие и обновляемые VPN сервисы. На крайний случай можно использовать платные VPN или установить браузер Opera? Перейти в приватный режим и включить кнопку VPN в адресной строке. Эффект тот же – ошибка 407 вас больше не затронет.
  • Если в браузере чисто – закройте программу VPN. Возможно сервер с прокси сегодня не доступен или сама программа перестала корректно работать.
  • Установите для теста бесплатную версию платных прокси серверов или VPN сервисов. Если проблема устранена – отлично, проблема ясна.
  • Используйте платные прокси. Стоит это дёшево и если есть на, то необходимость, можно потратить в месяц 1$ для стабильности в трафике.
  • Пройдите на сайт определения IP адреса. Если у вас выдает ваш стандартный местный ip адрес – у вас проблемы с VPN 100%.

ВАЖНО: Ошибка 407 возникает ТОЛЬКО со стороны вашего компьютера. Сайт, на который вы не можете зайти тут не при чем! Ошибка возникает ТОЛЬКО если у вас установлены дополнения, прокси сервисы или VPN.

Не нужно «лечить» компьютер перезагрузкой или переустановкой системы. Когда у вас болит палец на ноге, вы же не лечите проблему свечами от геморроя? Так и здесь. Таблетка от проблемы и шаги к исправлению ошибки 407 Proxy Authentication Required указаны выше. Ни реестр, ни система, ни антивирус тут ни при чем. Действуйте.

  1. Ошибка 407 в программах, работающих через Proxy

Предположим вы – вебмастер. У вас установлена программа Key Collector, которая работает через прокси для безопасности аккаунтов в Яндекс и Google. Кроме того, программа использует прокси лист для ускорения работы парсера.  Вы купили прокси и ввели их в настройках. Другие программы работают по аналогичному принципу. В настройках вы прописываете адрес и данные авторизации.

Что означает ошибка 407 Proxy Authentication Required в программах? На самом деле все просто – либо вы ошиблись при вводе данных авторизации оплаченных прокси, либо ваш прокси лист закончился. Например, вы купили прокси 1 января до 1 марта. Естественно, что вы получите ошибку 407, если сегодня 2 марта. А еще, вы могли попытаться купить прокси как можно дешевле и получили не самый отзывчивый прокси сервер.

Для подобных программ стоит покупать проверенные прокси. Также следует не забывать, что на работе некоторые администраторы ставят защиту от использования подобных программ и прокси. Поэтому, если вы решили «подрабатывать» на работе – займитесь своими прямыми задачами.

Мы помогли вам решить вопрос? Удалось ли вам исправить HTTP 407 Proxy Authentication Required? Если остались вопросы – напишите нам в комментариях с деталями проблемы. В идеале прикрепить скриншот с ошибкой, чтобы наш специалист помог разобраться с проблемой.

Понравилась статья? Поделить с друзьями:
  • Error ts5055 cannot write file because it would overwrite input file
  • Error ts2769 no overload matches this call
  • Error ts2532 object is possibly undefined
  • Error ts2503 cannot find namespace nodejs
  • Error ts18003 no inputs were found in config file