Как использовать прокси с Httpx

Как использовать прокси с Httpx

В этом руководстве я объясню, как использовать прокси с Httpx. Я покажу, как их настраивать, использовать аутентификацию, переключаться между разными прокси и даже работать с премиальными резидентскими прокси. Не волнуйтесь — это проще, чем кажется. Давайте приступим!

Что такое Httpx?

Httpx - это продвинутый HTTP-клиент для Python, разработанный той же командой, что и популярная библиотека requests. Однако у Httpx есть дополнительные возможности:

  • Поддержка синхронных и асинхронных запросов
  • HTTP/2 и пул соединений
  • Управление потоковой передачей и таймаутами

Его можно установить через pip:

pip install httpx

Let’s now see how to use proxies with Httpx.

Зачем использовать прокси?

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

Преимущества использования прокси

  • Обход IP-блокировокСайты могут заблокировать ваш реальный IP-адрес, если вы отправляете слишком много запросов. Прокси-сервер помогает этого избежать.
  • Управление геолокацией: Вы можете имитировать пользователей из разных стран.
  • Более высокая анонимность: Ваш реальный IP-адрес никогда не раскрывается.
  • Масштабируемость: Отправляйте тысячи запросов, не вызывая подозрений.

Базовый запрос без прокси

Вот базовый запрос Httpx без использования прокси:

# scraper.py
импорт httpx
response = httpx.get("https://httpbin.io/ip")
печать(response.text)

Это вернет ваш реальный IP-адрес:

{
"origin": "123.45.67.89"
}

Как задать прокси в Httpx на Python

Теперь отправим тот же запрос через прокси.

Добавление прокси в Httpx

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

# scraper.py
импорт httpx
proxies = {
"http://": "http://216.137.184.253:80",
"https://": "http://216.137.184.253:80"
}
response = httpx.get("https://httpbin.io/ip", proxies=proxies)
печать(response.text)

Tip: Бесплатные прокси могут быть нестабильными или уже заблокированными. Используйте их для тестирования, а не в продакшене.

Использование клиента Httpx через прокси

Можно также указать прокси при создании экземпляра Client:

# scraper.py
импорт httpx
с httpx.Client(proxy="http://216.137.184.253:80") в роли client:
response = client.get("https://httpbin.io/ip")
печать(response.text)

Client будет полезен, если вы отправляете несколько запросов через один и тот же прокси.

Аутентификация прокси (имя пользователя и пароль)

Премиум-прокси, например от Bright Data, часто требуют аутентификации. Вам нужно будет указать имя пользователя и пароль в URL-адресе прокси.

Format:

http://<USERNAME>:<PASSWORD>@<PROXY_IP>:<PORT>

Пример:

# scraper.py
импорт httpx
proxy_url = "http://myuser:[email protected]:80"
с httpx.Client(proxy=proxy_url) в роли client:
response = client.get("https://httpbin.io/ip")
печать(response.text)

Замените myuser и mypass на ваши фактические учетные данные для прокси Bright Data.

Ротация прокси с помощью Httpx

Ротация прокси помогает избежать ограничений по частоте запросов или банов. Можно вести список и выбирать случайный прокси для каждого запроса.

Пример:

# scraper.py
импорт httpx
импорт random
proxy_list = [
"http://20.210.113.32:8123",
"http://47.56.110.204:8989",
"http://50.174.214.216:80"
]
random_proxy = random.choice(proxy_list)
с httpx.Client(proxy=random_proxy) в роли client:
response = client.get("https://httpbin.io/ip")
печать(response.text)

Каждый запрос будет проходить через случайно выбранный прокси.

Обработка сбоев с помощью логики повторных попыток

Некоторые прокси могут давать сбои. Добавьте логику повторных попыток, чтобы скрейпер работал без сбоев:

# scraper.py
импорт httpx
импорт случайно
импорт time
proxies = [
"http://20.210.113.32:8123",
"http://47.56.110.204:8989",
"http://50.174.214.216:80"
]
url = "https://httpbin.io/ip"
для попытка в ассортимент(5):
proxy = random.choice(proxies)
попробуйте:
с httpx.Client(proxy=proxy, timeout=5) в роли client:
response = client.get(url)
печать(response.text)
перерыв
кроме httpx.RequestError:
печать(попытка {attempt 1} сбой при работе с прокси {proxy}")
time.sleep(2)

Шаг 6: Асинхронные запросы через прокси

Httpx поддерживает асинхронные запросы с AsyncClient. Это полезно для высокоскоростного веб-скрейпинга.

Пример:

# scraper_async.py
импорт httpx
импорт asyncio
async def получить():
proxy_url = "http://216.137.184.253:80"
async с httpx.AsyncClient(proxy=proxy_url) в роли client:
response = ожидайте client.get("https://httpbin.io/ip")
печать(response.text)
asyncio.run(fetch())

Это можно масштабировать, запуская множество корутин параллельно.

Шаг 7: Используйте прокси Bright Data с Httpx

Бесплатные прокси Такие прокси полезны для тестирования, но медленные, небезопасные, ненадежные и часто блокируются.

Для production-скрейпинга используйте премиального провайдера прокси, например Яркие данные или IPRoyal.

Почему я выбрал Bright Data?

  • Более 150 млн резидентских IP-адресов по всему миру
  • Геотаргетинг по стране, городу или ASN
  • Автоматическая ротация IP-адресов
  • Высокая скорость и минимальная задержка
  • Панель управления и API для управления прокси в реальном времени

Как использовать Bright Data с Httpx

После регистрации вы получите свои учетные данные для прокси.

Вот как подключить их к коду:

# scraper.py
импорт httpx
proxy_url = "http://username:[email protected]:33335"
с httpx.Client(proxy=proxy_url) в роли client:
response = client.get("https://httpbin.io/ip")
печать(response.text)

Замените username и password на ваши фактические учетные данные для прокси Bright Data.

Example Output

Каждый раз при запуске приведенного выше скрипта вы будете получать другой резидентский IP-адрес:

{
"origin": "178.62.45.183"
}
{
"origin": "191.101.54.225"
}

Bright Data автоматически выполняет ротацию IP-адресов, если вы настроите это в панели управления.

Бонус: Ротация заголовков и User-Agent

Чтобы еще больше снизить риск обнаружения, ротируйте заголовки, такие как User-Agent, чтобы имитировать разные браузеры.

Пример:

импорт httpx
импорт random
user_agents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",
"Mozilla/5.0 (X11; Linux x86_64)"
]
headers = {
"User-Agent": random.choice(user_agents)
}
proxy = "http://username:[email protected]:22225"
с httpx.Client(proxy=proxy, headers=headers) в роли client:
response = client.get("https://httpbin.io/headers")
печать(response.json())

Это имитирует запросы реального браузера, помогая оставаться незамеченным.

Заключение

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

Теперь, когда вы знаете это, вы готовы свободнее исследовать веб и безопаснее собирать данные. Начните тестировать прокси уже сегодня и посмотрите, что сможете создать. С Httpx и Python мощные инструменты для веб-скрейпинга находятся всего в нескольких строках кода. Продолжайте экспериментировать и учиться!

Похожие записи