Как проверить прокси на работоспособность python
Перейти к содержимому

Как проверить прокси на работоспособность python

  • автор:

Как проверить прокси на валидность?

Пытаюсь проверить прокси из списка «http_proxy» использую следующий код:

from colorama import Fore import requests http_proxy = ["87.107.18.83:8080","104.245.228.65:8080","0.0.0.1:80"] class checker(object): def check(self,x): url='http://google.com' try: requests.get(url,proxies=,timeout=(20.05,27), verify=False) except requests.exceptions.ConnectionError as e: print(Fore.BLUE+'ОШИБКА. ',e) return e except requests.exceptions.ConnectTimeout as e: print(Fore.BLUE+'ОШИБКА. Connection timeout',e) return e except requests.exceptions.HTTPError as e: print(Fore.BLUE+'ОШИБКА. code',e.code) return e.code except requests.exceptions.Timeout as e: print(Fore.BLUE+'ОШИБКА. Connection Timeout!',e) return e except urllib3.exceptions.ProxySchemeUnknown as e: print(Fore.BLUE+'ОШИБКА. ',e) return e c = checker() for i in http_proxy: if c.check(i): print(Fore.RED + 'Bad proxy', i) else: print(Fore.GREEN + 'Good proxy', i)

Получаю ошибки в ответ:

ОШИБКА. HTTPConnectionPool(host='87.107.18.83', port=8080): Max retries exceeded with url: http://google.com/ (Caused by ConnectTimeoutError(, 'Connection to 87.107.18.83 timed out. (connect timeout=20.05)')) Bad proxy 87.107.18.83:8080 ОШИБКА. HTTPConnectionPool(host='104.245.228.65', port=8080): Max retries exceeded with url: http://google.com/ (Caused by ConnectTimeoutError(, 'Connection to 104.245.228.65 timed out. (connect timeout=20.05)')) Bad proxy 104.245.228.65:8080 ОШИБКА. HTTPConnectionPool(host='0.0.0.1', port=80): Max retries exceeded with url: http://google.com/ (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError(': Failed to establish a new connection: [WinError 10051] Сделана попытка выполнить операцию на сокете при отключенной сети'))) Bad proxy 0.0.0.1:80

Первые два прокси из списка валидные.
Если вместо http:// поставить https:// покажет что все прокси валидные.

  • Вопрос задан более трёх лет назад
  • 4077 просмотров

HTTP-прокси или SOCKS-прокси с модулем requests в Python

Запросы к сайтам через HTTP-прокси или SOCKS-прокси

Содержание:
  • Запросы через HTTP-прокси;
  • Запросы через SOCKS-прокси.

Запросы через HTTP-прокси.

Если необходимо использовать прокси-сервер для запросов к серверу, то для любого метода запроса можно передавать аргумент proxies , в который необходимо указать список прокси-серверов:

import requests # список прокси-серверов proxies =  'http': 'http://10.10.1.10:3128', 'https': 'http://10.10.1.10:1080', > requests.get('http://example.org', proxies=proxies) 

В качестве альтернативы можно настроить список прокси один раз для всего сеанса/сессии:

import requests proxies =  'http': 'http://10.10.1.10:3128', 'https': 'https://10.10.1.10:1080', > session = requests.Session() session.proxies.update(proxies) session.get('http://example.org') 

Когда конфигурация прокси-серверов не переопределяется в Python, как показано выше, то по умолчанию библиотека requests полагаются на конфигурацию прокси-сервера, определенную стандартными переменными среды http_proxy , https_proxy , no_proxy и curl_ca_bundle . Также поддерживаются варианты этих переменных в верхнем регистре. Следовательно можно настроить их для использования в запросах (только те, которые соответствуют вашим потребностям):

$ export HTTP_PROXY="http://10.10.1.10:3128" $ export HTTPS_PROXY="https://10.10.1.10:1080" $ python3 >>> import requests >>> requests.get('http://example.org') 

Чтобы использовать HTTP Basic Auth с прокси, необходимо использовать синтаксис http://user:password@host/ в любой из приведенных выше записей конфигурации:

# через переменные среды $ export HTTPS_PROXY="http://user:pass@10.10.1.10:1080" # в коде Python >>> proxies = 'http': 'http://user:pass@10.10.1.10:3128/'> 

Предупреждение. Хранение конфиденциальной информации в открытом виде об имени пользователя и пароле в переменных средах или файле с кодом представляет собой угрозу безопасности и настоятельно не рекомендуется.

Чтобы предоставить прокси-сервер для конкретной схемы и хоста, используйте форму scheme://hostname для ключа. Это будет соответствовать для любого запроса заданной схеме и точному имени хоста.

proxies = 'http://10.20.1.128': 'http://10.10.1.10:5323'> 

Обратите внимание, что URL-адреса прокси должны включать схему.

Наконец, обратите внимание, что использование прокси-сервера для HTTPS-соединений обычно требует, чтобы локальный компьютер доверял корневому сертификату прокси. По умолчанию список сертификатов, которым доверяют запросы, можно найти с помощью:

from requests.utils import DEFAULT_CA_BUNDLE_PATH print(DEFAULT_CA_BUNDLE_PATH) 

Можно переопределить этот набор сертификатов по умолчанию, установив для стандартной переменной среды curl_ca_bundle другой путь к файлу:

# переопределяем набор сертификатов через переменные среды $ export curl_ca_bundle="/usr/local/myproxy_info/cacert.pem" $ export https_proxy="http://10.10.1.10:1080" # запускаем Python $ python3 >>> import requests # делаем запрос >>> requests.get('https://example.org') 

Запросы через SOCKS-прокси.

Новое в версии 2.10.0.

Помимо основных HTTP-прокси, библиотека requests также поддерживает прокси, использующие протокол SOCKS. Это дополнительная функция, для которой перед использованием необходимо установить дополнительные сторонние библиотеки.

Вы можете получить зависимости для этой функции из pip:

$ python -m pip install requests[socks] 

После того как установили эти зависимости, использовать SOCKS-прокси так же просто, как и HTTP-прокси:

# просто аргументу proxies необходимо # передать список SOCKS-прокси proxies =  'http': 'socks5://user:pass@host:port', 'https': 'socks5://user:pass@host:port' > 

Использование схемы socks5 приводит к тому, что разрешение DNS происходит на клиенте, а не на прокси-сервере. Это соответствует утилите linux терминала curl , которая использует схему, чтобы решить, следует ли выполнять разрешение DNS на клиенте или прокси-сервере. Если необходимо разрешение DNS на прокси-сервере, то используйте socks5h в качестве схемы.

  • КРАТКИЙ ОБЗОР МАТЕРИАЛА.
  • GET и POST запросы c модулем requests
  • Получение/отправка заголовков сервера модулем requests
  • Извлечение и установка cookies с модулем requests
  • Сессии/сеансы Session() модуля requests
  • Объект ответа сервера Response модуля requests
  • Получение и отправка данных в виде JSON с модулем requests
  • Установка timeout для модуля requests
  • Объект PreparedRequest модуля requests
  • Загрузка файлов на сервер модулем requests
  • Загрузка больших данных модулем requests
  • HTTP-прокси или SOCKS-прокси с модулем requests
  • Использование хуков модуля requests
  • Аутентификация с модулем requests
  • SSL и модуль requests

Как проверить прокси на работоспасобность с помощю Python

У меня проблема с моей страной. У моей страны жесткий контроль Интернета. Практический все VPN не работают. Но обхожу блокировку с помощью Proxifier, но и для него надо: собирать список прокси и каждую отдельно проверять. Это занимает ужасно много времени. Я решил все это ускорить с помощью python. У меня пока знания языка и представление о сетях начальный уровень. По этому если знаете как это можно реализовать помогите пожалуйста.

Отслеживать
18 1 1 бронзовый знак
задан 23 июн в 4:44

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

import requests proxies = < 'http': 'http://10.10.10.10:3333', 'https': 'http://10.10.10.10:8888', >response=requests.get('http://example.org любой сайт для проверки' , proxies=proxies) if response.status_code == 200: print('Success!') 

Можно из файла подставлять список адресов и портов

Отслеживать
ответ дан 23 июн в 5:49
2,100 1 1 золотой знак 8 8 серебряных знаков 9 9 бронзовых знаков

  • python
  • сеть
  • proxy
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Простая проверка прокси на python

Когда-то я пытался размещать и парсить МНОГО объявлений на всем известной доске объявлений Авито. Так как аккаунты уже начали активно банить, я пытался как-то этого избежать и первое что пришло мне в голову — менять IP адрес. Для этого я решил найти бесплатные и не очень прокси, но оказалось что не один я такой умный, и авито активно банил IP-адреса проксей, с которых пытались массово постить объявления. В итоге, я пришел к тому что можно проверять доступность авито через прокси, для этого был написан простой скрипт на python, код которого я привожу ниже.

# coding=utf-8
from grab import Grab
g = Grab()

f = open(‘proxylist.txt’) # мой сырой список прокси
av = open(‘goodproxy.txt’, ‘w’) # прокси через которые виден авито

num_lines = sum(1 for line in f)
print (‘Proxies in file: ‘ + str(num_lines))
f.close()

with open(‘proxylist.txt’) as f:
mylist = [line.rstrip(‘\n’) for line in f]

cycle = 0
while cycle < num_lines:
s = mylist[cycle]
try:
g.setup(proxy=s)
g.go(‘http://avito.ru‘)
print
av.write(s+’\n’)
print (s +’ – ok [‘+str(cycle)+’|’+str(num_lines)+’] ‘+g.doc.select(‘//title’).text().encode(‘utf-8’))
except Exception as inst:
print (s +’ – ‘+ str(inst) +’ [‘+str(cycle)+’|’+str(num_lines)+’]’)
cycle += 1
print (‘Done’)

В кратце: скрипт читает файл proxylist.txt, в котором содержится список полученных мною прокси, так-же открывает файл goodproxy.txt — в него записываются отфильтрованные адреса прокси, через которые виден авито.

Если у Вас возникли вопросы по работе скрипта, пишите в комментарии, я обязательно отвечу.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *