Адрес, порт, логин и пароль прокси
Каждый рабочий прокси описывается пятью базовыми полями: протокол, адрес хоста, порт, логин и пароль.
В Scrapy есть встроенный прокси-middleware, поэтому прокси можно задать для отдельного запроса, для всего паука или через окружение. В этом руководстве показан каждый способ, настройки, которые делают краулинг аккуратным, и проверка того, что прокси действительно используется.
Документация Scrapy описывает HttpProxyMiddleware как компонент, который задаёт HTTP-прокси для запросов через значение proxy в meta объекта Request. Этот ключ можно задать самому, значением вроде http://some_proxy_server:port или http://username:password@some_proxy_server:port. Документация добавляет, что значение в запросе имеет приоритет над переменными окружения и что оно игнорирует no_proxy.
import scrapy
class IpSpider(scrapy.Spider):
name = "ip"
async def start(self):
yield scrapy.Request(
"https://ipinfo.io/json",
meta={"proxy": "http://USERNAME:PASSWORD@proxy-host:port"},
)
def parse(self, response):
yield response.json()Замените USERNAME, PASSWORD, proxy-host и port значениями вашего прокси. Метод start() соответствует текущей документации Scrapy.
Чтобы не повторять ключ meta, задайте его в downloader middleware. В документации сказано, что downloader middleware включается настройкой DOWNLOADER_MIDDLEWARES, где у каждого пути класса есть порядковый номер, и что process_request() вызывается для каждого запроса, который через него проходит.
# myproject/middlewares.py
class ProxyMiddleware:
def process_request(self, request):
request.meta.setdefault("proxy", "http://USERNAME:PASSWORD@proxy-host:port")
return NoneТолько пример: замените значения-заглушки своими.
# settings.py
DOWNLOADER_MIDDLEWARES = {
"myproject.middlewares.ProxyMiddleware": 543,
}Берите логин и пароль из переменной окружения или файла с секретами, а не пишите их в коде. Проверьте сигнатуру process_request() в документации той версии Scrapy, которую вы используете.
HttpProxyMiddleware, как и urllib.request в Python, учитывает переменные окружения http_proxy, https_proxy и no_proxy. Задайте их до запуска краулера, и код паука менять не придётся.
export http_proxy="http://USERNAME:PASSWORD@proxy-host:port"
export https_proxy="http://USERNAME:PASSWORD@proxy-host:port"
scrapy crawl ipСимволы вроде @, : и / в пароле нужно кодировать с помощью процентного кодирования в URL прокси. См. [руководство об адресе, порте и логине прокси](/ru/guides/proxy-address-port-login/).
Документация Scrapy сообщает, что URL SOCKS-прокси вроде socks5://username:password@some_proxy_server:port можно использовать, только если обработчик загрузки его поддерживает; из встроенных обработчиков она называет поддерживающим тот, что основан на httpx, а остальные встроенные обработчики не поддерживают. На той же странице отмечено, что URL прокси обычно используют схему http://. Для стандартного проекта Scrapy используйте HTTP-прокси. Если нужен SOCKS5, сначала выясните, какой обработчик загрузки вы используете, и прочитайте его документацию.
Запустите паука выше и прочитайте поля country и org в ответе от https://ipinfo.io/json; как их читать, объясняет руководство по проверке местоположения прокси. Если вы видите свой собственный адрес, ключ meta не был задан для этого запроса или переменные окружения были заданы уже после старта краулера. Добавьте middleware, чтобы ключ был в каждом запросе.
Прокси меняет адрес, который видит сайт, но правила сайта продолжают действовать. В Scrapy для этого есть настройки. В документации по настройкам сказано, что ROBOTSTXT_OBEY заставляет Scrapy соблюдать политики robots.txt и что она включена в settings.py, созданном командой scrapy startproject. DOWNLOAD_DELAY задаёт минимальное число секунд между двумя последовательными запросами к одному домену и нужна, чтобы не нагружать серверы слишком сильно, а CONCURRENT_REQUESTS_PER_DOMAIN ограничивает число одновременных запросов к домену. Расширение AutoThrottle динамически подстраивает задержки по времени загрузки, чтобы достичь целевой параллельности для каждого удалённого сайта. Перед краулингом сайта прочитайте его условия использования.
# settings.py
ROBOTSTXT_OBEY = True
DOWNLOAD_DELAY = 1
CONCURRENT_REQUESTS_PER_DOMAIN = 2
AUTOTHROTTLE_ENABLED = TrueЭти значения — отправная точка; подберите числа, которые подходят сайту и вашей задаче.
Статус 407 означает, что прокси не принял логин и пароль: скопируйте их заново и проверьте кодирование, затем см. руководство по ошибке аутентификации. Ошибки соединения и тайм-ауты обычно означают неверный хост, порт или схему; проверки перечислены в руководстве по сбою подключения. Документация описывает RetryMiddleware как повторяющий запросы, которые завершились сбоем по временным причинам, например из-за тайм-аута соединения или ошибки HTTP 500, поэтому несколько сбоев в логе не всегда означают проблему с прокси. Если вы собираете страницы обычными HTTP-вызовами, а не через Scrapy, см. руководство по Python requests.
Для любой из этих настроек нужны только хост, порт, логин и пароль прокси Proxy302. Ротируемый резидентный трафик оплачивается за ГБ, а страна выхода задаётся при создании прокси; HTTP работает на порту 2222 хоста proxy.proxy302.com. Статический ISP IP остаётся фиксированным весь срок аренды и не ротируется. В таблице показаны выходы в 7 странах по нашей последней почасовой проверке; зонд отправляет запрос в ChatGPT, это лишь пример цели. Подробности — на странице ротируемых резидентных прокси и в руководстве по проверке местоположения прокси.
| Пункт | Город | Сеть (провайдер) | ASN |
|---|---|---|---|
| США | Baton Rouge, Louisiana | Verizon Business | AS6167 |
| Великобритания | Birkenhead, England | Virgin Media Limited | AS5089 |
| Германия | Hannover, Lower Saxony | htp GmbH | AS13045 |
| Япония | Saitama, Saitama | JCOM Co., Ltd. | AS9824 |
| Сингапур | Yishun New Town, Singapore | Singtel Fibre Broadband | AS9506 |
| Бразилия | Silvianópolis, Minas Gerais | intertel telecomunicacao LTDA | AS268801 |
| Индонезия | Джакарта | PT Mahawira Nusantara Grup | AS151576 |
Почасовая проверка зонда Proxy302, 28 октября 2026, 14:56 UTC: по одному запросу к ChatGPT из каждой страны через динамический резидентный выход, по публичной точке входа Proxy302. Публично показаны только первые три октета IP. Один замер на страну, не среднее; следующие проверки будут отличаться.
Откройте страницу ротационных резидентных прокси, выберите линию, оставьте протокол HTTP или выберите SOCKS5 и нажмите «Проверить цену и создать».
Откройте «Мои активы» (раздел консоли со всем, что вы купили) и скопируйте HOST, PORT, USERNAME и PASSWORD. На странице «Подключение» есть готовый пример с вашими данными.
Введите данные в браузер или программу, которую вы настраиваете.
Подтвердите выход запросом к https://ipinfo.io/json через прокси.
Из материкового Китая сначала запустите вспомогательную программу на странице «Подключение» и держите её открытой, пока работает прокси.
Бюджетная линия стоит $1,50 за ГБ, $1,35 за ГБ в пакете 100 ГБ и $1,20 за ГБ при 300 ГБ. Бесплатного пробного периода нет, а минимальная покупка составляет 1 ГБ. Набор доступных локаций меняется ежедневно.
В документации в качестве примеров приведены http://some_proxy_server:port и http://username:password@some_proxy_server:port.
В документации сказано, что URL SOCKS-прокси работает, только если обработчик загрузки его поддерживает, а из встроенных назван обработчик на основе httpx.
Нет. В документации сказано, что значение proxy в meta запроса имеет приоритет над переменными окружения и игнорирует no_proxy.
Нет. ROBOTSTXT_OBEY — отдельная настройка Scrapy, и прокси её не меняет.
Официальная документация · Проверено:
Прочитано 28 октября 2026 (версия документации 2.19.0): ключ proxy в meta, http_proxy/https_proxy/no_proxy, форматы URL с учётными данными, приоритет значения из meta, зависимость SOCKS от обработчика загрузки, DOWNLOADER_MIDDLEWARES и process_request(), а также RetryMiddleware.
Официальная документация · Проверено:
Прочитано 28 октября 2026: словарь meta у Request, ключ proxy в meta и асинхронный метод start() паука.
Официальная документация · Проверено:
Прочитано 28 октября 2026: ROBOTSTXT_OBEY (включена в settings.py, созданном командой startproject), DOWNLOAD_DELAY и CONCURRENT_REQUESTS_PER_DOMAIN.
Официальная документация · Проверено:
Прочитано 28 октября 2026: расширение динамически подстраивает задержки по времени загрузки, чтобы достичь AUTOTHROTTLE_TARGET_CONCURRENCY для каждого удалённого сайта.
Наблюдение за продуктом · Проверено:
Файл фактов о продуктах сайта (значения сверены с консолью, бэкендом и прайсом 18-19 октября 2026): продукты, цены в долларах США (1 PTC = 1 USD), сроки аренды, протоколы и порты, число стран, лимиты количества, отсутствие бесплатного теста.
Наблюдение за продуктом · Проверено:
Публичный JSON зонда proxy302.com/live/connectivity/chatgpt.json, прочитан 28 октября 2026, 14:56 UTC: по одному запросу на страну через динамический резидентный выход; город, ASN, сеть и время ответа.
Создайте аккаунт, пополните баланс и выберите ротируемый резидентный, статический ISP или дата-центр IP — настроить его в браузере можно за несколько минут.