перейти к содержанию

Полное руководство по использованию прокси с запросами Python

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

В этом подробном руководстве я расскажу все, что вам нужно знать для использования прокси с модулем запросов Python. Я объясню, почему прокси полезны, как они работают, где их получить, лучшие практики аутентификации и безопасности, а также как реализовать ротацию прокси. Следуйте инструкциям, и я сделаю вас прокси-профессионалом!

Почему прокси необходимы для парсеров Python

Давайте сначала посмотрим, почему прокси так важны для парсеров Python:

Избегайте блокировки при парсинге

Причина №1 для использования прокси с запросами Python — это избежание банов по IP. Многие сайты имеют средства защиты для блокировки парсеров и ботов. Они могут разрешить определенное количество запросов в минуту с определенного IP-адреса, прежде чем внести его в черный список.

При сборе данных из постоянно меняющегося пула прокси-серверов вы будете выглядеть как множество разных пользователей. Сайтам будет сложнее обнаружить и заблокировать вас по сравнению со сбором данных с одного домашнего IP-адреса.

Чтобы дать вам представление о масштабе, сайт может разрешать 60–100 запросов в минуту на каждый IP-адрес, прежде чем сработает запрет. Даже с помощью всего лишь нескольких прокси вы можете легко увеличить свою производительность парсинга в десять раз. Прокси обеспечивают масштабируемость.

Доступ к контенту с географическим ограничением

Еще одним преимуществом прокси является возможность доступа к контенту, ограниченному определенными регионами. Например, сервис потокового видео BBC iPlayer доступен только жителям Великобритании. Направляя свой трафик через британский прокси, вы можете просматривать сайт так, как если бы вы находились в Лондоне.

Другие известные примеры включают Hulu (только в США), Channel 4 (Великобритания) и NHK World (Япония). Прокси дают вам возможность получить доступ к контенту с ограниченным регионом из любой точки мира.

Анонимность и безопасность

Сокрытие вашего реального IP-адреса также повышает конфиденциальность при очистке. Сайты не смогут легко отследить запросы до вашего местоположения или личности.

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

Масштабирование скребков Python

Прокси позволяют вам выполнять значительно больше параллельных запросов, поскольку вы не ограничены емкостью одного домашнего IP-адреса.

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

Если каждый прокси допускает скорость 60 запросов в минуту, 4 прокси дадут вам пропускную способность 240 запросов в минуту. 10 прокси масштабируются до 600 запросов/мин. Прокси необходимы для создания распределенных, объемных парсеров на Python.

Теперь, когда вы понимаете, чем полезны прокси, давайте углубимся в детали того, как они работают…

Как работают прокси: анонимизация ваших запросов

Прокси выступают в качестве посредников для запросов между вами и целевым сервером:

Как работают прокси

Вместо прямого подключения с вашего IP-адреса к целевому сайту ваши запросы сначала направляются через прокси-сервер. Это маскирует ваш реальный IP-адрес от места назначения.

Это работает путем настройки ваших HTTP-запросов на использование IP-адреса прокси-сервера вместо вашего собственного. Позже мы расскажем, как именно настроить это в Python.

Некоторые ключевые замечания о том, как работают прокси:

  • Прокси имеет свой собственный уникальный IP-адрес, с которого, по-видимому, поступает трафик. Это скроет ваш реальный IP-адрес, заменив его прокси-сервером.

  • Прокси могут быть объединены в цепочку для дополнительной анонимности. Вы можете маршрутизировать трафик через несколько прокси-серверов, чтобы еще больше запутать источники.

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

Теперь, когда вы понимаете, как работают прокси на фундаментальном уровне, давайте рассмотрим различные доступные типы прокси.

HTTP против SOCKS Доверенные

Двумя основными протоколами прокси являются HTTP и SOCKS. Давайте сравним их:

HTTP прокси

HTTP-прокси — наиболее распространенный тип, с которым вы можете столкнуться. Некоторые ключевые атрибуты:

  • Работает только для трафика HTTP/HTTPS. (не TCP/UDP нижнего уровня)
  • Прост в настройке – совместим с большинством библиотек и инструментов
  • Обычно используется для парсинга веб-страниц и общего доступа к сети.

HTTP-прокси по существу перехватывают HTTP-запросы, сделанные клиентом, и пересылают их по назначению. Они ограничены только HTTP-трафиком.

SOCKS Доверенные

SOCKS — это более полнофункциональный прокси-протокол, работающий на нижних уровнях сети.

Некоторые особенности:

  • Работает для любого TCP-трафика., включая HTTP, HTTPS, FTP и т. д.
  • Добавлены функции аутентификации и безопасности. например имя пользователя/пароль для аутентификации.
  • Обычно используется для полного доступа к сети и анонимности.

В то время как HTTP-прокси работают только на уровне приложения, SOCKS находится ниже на сетевом/транспортном уровне. Это позволяет SOCKS для проксирования практически любого TCP-трафика.

Что следует использовать?

Для большинства случаев использования веб-скрапинга вполне подойдет HTTP-прокси. Его проще настроить, и вас заботит только направление HTTP-запросов через прокси.

Если вам нужна полная маршрутизация доступа к сети для трафика более низкого уровня, помимо HTTP, используйте SOCKS . SOCKS также лучше, если вы отдаете приоритет дополнительной безопасности и нуждаетесь в аутентификации.

Для нашего использования веб-скрейперов Python идеально подходят HTTP-прокси. Теперь давайте посмотрим, где взять прокси-серверы.

Где взять прокси для парсинга веб-страниц

Существует несколько основных методов получения прокси для использования с запросами Python:

1. Купите прокси у прокси-провайдера.

Самый простой способ — приобрести прокси у прокси-сервиса. Некоторые ведущие поставщики включают в себя:

  • БрайтДата – Мой любимый провайдер с высококачественными домашними IP-адресами по всему миру. Быстрые соединения и надежность безотказной работы.

  • Оксилабс – Прокси-серверы центров обработки данных доступны для всех регионов для поддержки больших объемов. Доступная цена.

  • Геосерфинг – Специализируется на резидентных прокси для конкретных стран для доступа к контенту с географическим ограничением.

Будьте готовы платить около 1–5 долларов за прокси в месяц, в зависимости от качества провайдера и местоположения. API-интерфейсы прокси-сервисов упрощают загрузку списков новых прокси-серверов для интеграции в ваш код.

2. Найдите общедоступные прокси

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

Полезные места для поиска публичных прокси:

Я не рекомендую полагаться исключительно на публичные прокси, но в крайнем случае они могут дополнить платные. Ожидайте меньшего времени безотказной работы/скорости.

3. Разверните свои собственные прокси

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

Это дает вам контроль, но требует больше усилий для настройки и обслуживания прокси-серверов. Обычно для простоты вы передаете предоставление прокси-сервера провайдеру.

Подводя итог, я рекомендую приобретать прокси у надежного провайдера, такого как BrightData, если бюджет не сильно ограничен. Надежность и качество перевешивают работу с хитрыми публичными прокси.

Далее давайте углубимся в код и посмотрим, как настраивать запросы Python с использованием прокси…

Настройка прокси — примеры запросов Python

Запросы Python упрощают направление вашего трафика через прокси-серверы.

Вы указываете прокси, создавая proxies dict, который сопоставляет схемы URL-адресов с URL-адресами прокси:

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

Затем передайте этот прокси-диктант при отправке запросов:

response = requests.get(‘https://example.com‘, proxies=proxies)

Это будет маршрутизировать все запросы HTTP и HTTPS через указанные прокси.

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

Глобальный прокси для всех запросов

Чтобы применить прокси глобально ко всем запросам, сделанным через сеанс запросов, установите прокси-сервер на уровне сеанса:

import requests

session = requests.Session() 

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

session.proxies = proxies

response = session.get(‘https://example.com‘) 
# Uses HTTP proxy http://10.10.1.10:3128

Вы также можете сделать это, установив переменные среды HTTP_PROXY и HTTPS_PROXY перед запуском скрипта.

Прокси по запросу

Чтобы использовать прокси только для определенного запроса, передайте dict прокси в качестве параметра только для этого вызова:

import requests 

response = requests.get(‘https://example.com‘) # no proxy

proxied_response = requests.get(‘https://example.com‘, proxies={
  ‘http‘: ‘http://10.10.1.10:3128‘,
  ‘https‘: ‘http://10.10.1.10:1080‘ 
}) # uses proxy

Это переопределяет глобальный прокси только для этого одного запроса.

Прокси для конкретного домена

Чтобы проксировать трафик только для определенных доменов, укажите домен в словаре прокси:

proxies = {
   ‘http://scrape-site.com‘: ‘http://10.10.1.10:3128‘,
   ‘https://api.example.com‘: ‘http://10.10.1.10:1080‘, 
}

requests.get(‘http://scrape-site.com/‘, proxies=proxies) # uses proxy
requests.get(‘http://no-proxy-domain.com‘, proxies=proxies) # no proxy

Это позволяет детально контролировать, какие сайты используют прокси, а какие нет.

Теперь, когда вы знаете, как применять прокси, давайте обсудим, как проходить аутентификацию с помощью прокси…

Аутентификация с помощью прокси

Для использования многих прокси потребуется аутентификация. Это предполагает передачу учетных данных имени пользователя и пароля в URL-адресах вашего прокси-сервера.

Вот пример URL-адреса HTTP-прокси с аутентификацией:

http://myusername:[email protected]:8080

Достаточно просто, но есть дополнительные соображения, если ваше имя пользователя или пароль содержит специальные символы.

Многие специальные символы, такие как @ и : недействительны в базовом синтаксисе URL. Чтобы справиться с этими случаями, нам нужно URL-кодирование полномочия с urllib библиотека:

from urllib.parse import quote

username = ‘[email protected]‘
password = ‘pass#123‘

proxy_url = f‘http://{quote(username)}:{quote(password)}@123.45.6.7:8080‘

Это позволит правильно закодировать эти значения, чтобы их можно было передать в URL-адресе.

Теперь ваши учетные данные могут содержать специальные символы, и вы можете успешно пройти аутентификацию.

Разобравшись с этим, давайте перейдем к обсуждению ротации прокси…

Ротация прокси во избежание банов

При парсинге веб-сайтов вам потребуется чередовать запросы по нескольким IP-адресам прокси. Это предотвращает вас от бана на сайтах за слишком большое количество запросов с одного IP.

Вот один из способов реализовать ротацию прокси в Python:

import requests 
from random import choice

proxy_list = [
  ‘http://123.45.6.7:8080‘,
  ‘http://98.76.54.3.2:8080‘,
  ‘http://103.47.99.2:8080‘  
]

for _ in range(10):

  proxy = choice(proxy_list)

  response = requests.get(‘https://example.com‘, proxies={
      ‘http‘: proxy,
      ‘https‘: proxy
  })

  # Do something with response...

Мы ведем список URL-адресов прокси-серверов. Перед каждым запросом мы случайным образом выбираем прокси, используя Python random.choice(). Это чередует прокси с каждым запросом.

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

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

Обязательно внедрите аналогичную ротацию прокси в своих рабочих парсерах, чтобы оставаться вне поля зрения.

Заключительные мысли о прокси с запросами Python

И вот оно — подробное руководство по использованию прокси с модулем запросов Python!

Мы рассмотрели важность прокси для веб-скребков Python, как они работают «под капотом», где получить прокси, как настроить запросы на использование прокси, аутентификацию и шаблоны ротации прокси.

Прокси имеют решающее значение для успешного парсинга сайтов в больших масштабах и предотвращения банов по IP. Благодаря описанным здесь методам вы сможете использовать прокси как профессионал!

Для получения более подробной информации об использовании прокси см. запрашивает документацию. Теперь идите вперед и используйте свои вновь обретенные полномочия во благо! Дайте мне знать, если у вас есть еще вопросы по прокси.

Теги:

Присоединяйтесь к беседе

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