Python: requests.exceptions.ConnectionError. Максимальное количество попыток превышено с помощью URL-адреса

This is the script: import requests import json import urlparse from requests.adapters import HTTPAdapter s = requests.Session() s.mount('http://', HTTPAdapter(max_retries=1)) with open('proxies.txt') as proxies: for line in proxies: proxy=json.loads(line) with open('urls.txt') as urls: for line in urls: url=line.rstrip() data=requests.get(url, proxies=proxy) data1=data.content print data1 print {'http': line} 

как вы можете видеть, его попытка получить доступ к списку URL-адресов через список прокси. Вот файл urls.txt:

 http://api.exip.org/?call=ip 

вот файл proxies.txt:

 {"http":"http://107.17.92.18:8080"} 

Я получил этот прокси на www.hidemyass.com. Может быть, это плохой прокси? Я попробовал несколько, и это результат. Примечание. Если вы пытаетесь реплицировать это, возможно, вам придется обновить прокси-сервер до последнего на hidemyass.com. Похоже, что они перестали работать. вот полная ошибка и трассировка:

 Traceback (most recent call last): File "test.py", line 17, in <module> data=requests.get(url, proxies=proxy) File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 55, in get return request('get', url, **kwargs) File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 44, in request return session.request(method=method, url=url, **kwargs) File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 335, in request resp = self.send(prep, **send_kwargs) File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 454, in send history = [resp for resp in gen] if allow_redirects else [] File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 144, in resolve_redirects allow_redirects=False, File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 438, in send r = adapter.send(request, **kwargs) File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 327, in send raise ConnectionError(e) requests.exceptions.ConnectionError: HTTPConnectionPool(host=u'219.231.143.96', port=18186): Max retries exceeded with url: http://www.google.com/ (Caused by <class 'httplib.BadStatusLine'>: '') 

2 Solutions collect form web for “Python: requests.exceptions.ConnectionError. Максимальное количество попыток превышено с помощью URL-адреса”

Если посмотреть на трассировку стека, которую вы httplib.BadStatusLine , ваша ошибка вызвана исключением httplib.BadStatusLine , которое, согласно документам , равно:

Поднимается, если сервер отвечает кодом состояния HTTP, который мы не понимаем.

Другими словами, что-то, что возвращается (если вообще возвращается) прокси-сервером, не может быть проанализировано httplib, который выполняет фактический запрос.

Из моего опыта работы с (прописью) http-прокси можно сказать, что некоторые реализации не могут строго следовать спецификациям (спецификации rfc на http не просто читать на самом деле) или использовать хаки для исправления старых браузеров, которые имеют недостатки в их реализации.

Итак, отвечая на это:

Может быть, это плохой прокси?

… Я бы сказал, что это возможно. Единственный реальный способ убедиться в том, что посмотреть, что возвращается прокси-сервером.

Попробуйте отладить его с помощью отладчика или захватить сниффер пакетов (что-то вроде Wireshark или Network Monitor ), чтобы проанализировать, что происходит в сети. Информация о том, что именно возвращается прокси-сервером, должна дать вам ключ к решению этой проблемы.

Возможно, вы перегружаете прокси-сервер, отправляя слишком много запросов за короткий промежуток времени, вы говорите, что у вас есть прокси-сервер с популярного веб-сайта прокси-сервера, что означает, что вы не единственный, кто использует этот сервер, и он часто находится под тяжелым нагрузки.

Если вы добавили некоторую задержку между вашими запросами:

 from time import sleep [...] data=requests.get(url, proxies=proxy) data1=data.content print data1 print {'http': line} sleep(1) 

(обратите внимание на sleep(1) который приостанавливает выполнение кода в течение одной секунды)

Это работает ?

Python - лучший язык программирования в мире.