Как использовать резидентные прокси ProxyScrape с Scrapy на Python
Интегрируйте резидентные прокси ProxyScrape в свои пауки Scrapy для надежного веб-скрапинга на Python. Включает промежуточное ПО для ротации, аутентификацию и настройку SOCKS5.
Обзор
Scrapy — это мощный фреймворк Python для веб-скрапинга, но многие сайты блокируют запросы с одного IP. Использование прокси от ProxyScrape помогает распределять запросы, избегать ограничений скорости и получать доступ к геозависимому контенту. ProxyScrape предлагает резидентные, датацентровые и мобильные прокси с поддержкой HTTP и SOCKS5, оплатой по мере использования или фиксированной ежемесячной оплатой, а также пул из более чем 97 миллионов IP-адресов, созданный для долгосрочной бесперебойной работы.
Это руководство показывает, как интегрировать прокси ProxyScrape в проект Scrapy. Вы научитесь настраивать аутентификацию, ротировать прокси для каждого запроса и обрабатывать распространенные ошибки. Подход работает в Windows, macOS и Linux.
Предварительные требования
- Установленный Python 3.8 или новее.
- Установленный Scrapy (
pip install scrapy). - Аккаунт ProxyScrape с резидентными или датацентровыми прокси. Вы можете зарегистрироваться на план или использовать оплату по мере использования.
- Ваши учетные данные прокси: хост, порт, имя пользователя и пароль из панели управления ProxyScrape.
Понимание аутентификации прокси в Scrapy
ProxyScrape использует аутентификацию по имени пользователя и паролю. В Scrapy вы передаете URL прокси в мета-ключе запроса proxy. Формат:
- HTTP/HTTPS:
http://username:password@host:port - SOCKS5:
socks5://username:password@host:port
Scrapy изначально поддерживает прокси HTTP и HTTPS. Для SOCKS5 вам нужен дополнительный пакет, например scrapy-socks.
Шаг 1: Установка Scrapy и создание проекта
Откройте терминал и выполните:
pip install scrapy
scrapy startproject proxyscrape_scrapy
cd proxyscrape_scrapy
Это создаст новый проект Scrapy с директорией пауков по умолчанию.
Шаг 2: Получите учетные данные прокси от ProxyScrape
Войдите в свою панель управления ProxyScrape и создайте список прокси. Вы получите хост, порт, имя пользователя и пароль. Для резидентных прокси вы можете получить хост шлюза, который автоматически ротируется, или список конечных точек. Для датацентровых прокси вы обычно получаете фиксированный IP и порт.
Пример учетных данных:
- Хост:
proxy.proxyscrape.com - Порт:
8080 - Имя пользователя:
user123 - Пароль:
pass456
Ваш URL прокси становится: http://user123:[email protected]:8080
Если ваш пароль содержит специальные символы, закодируйте их в URL (например, @ становится %40).
Шаг 3: Настройка базового прокси в пауке
Создайте простого паука, который проверяет ваш IP-адрес через прокси. В proxyscrape_scrapy/spiders/example.py:
import scrapy
class ExampleSpider(scrapy.Spider):
name = 'example'
start_urls = ['https://httpbin.org/ip']
def start_requests(self):
proxy = 'http://user123:[email protected]:8080'
for url in self.start_urls:
yield scrapy.Request(
url,
meta={'proxy': proxy},
callback=self.parse
)
def parse(self, response):
yield {'ip': response.text}
Запустите паука:
scrapy crawl example -O output.json
Вывод показывает IP-адрес, который видит целевой сайт. Если он совпадает с IP вашего прокси, настройка работает.
Шаг 4: Реализация промежуточного ПО для ротации прокси
Ротация прокси для каждого запроса повышает анонимность и снижает вероятность блокировок. Создайте промежуточное ПО в proxyscrape_scrapy/middlewares.py:
import random
from scrapy import signals
class ProxyRotationMiddleware:
def __init__(self, proxies):
self.proxies = proxies
@classmethod
def from_crawler(cls, crawler):
return cls(crawler.settings.getlist('PROXY_LIST'))
def process_request(self, request, spider):
proxy = random.choice(self.proxies)
request.meta['proxy'] = proxy
spider.logger.debug(f'Using proxy: {proxy}')
Включите промежуточное ПО и определите список прокси в settings.py:
DOWNLOADER_MIDDLEWARES = {
'proxyscrape_scrapy.middlewares.ProxyRotationMiddleware': 543,
}
PROXY_LIST = [
'http://user1:pass1@host1:port1',
'http://user2:pass2@host2:port2',
'http://user3:pass3@host3:port3',
]
Теперь каждый запрос использует случайный прокси из списка. Вы можете заполнить список несколькими конечными точками ProxyScrape или использовать их ротирующий шлюз (одна конечная точка, которая автоматически ротируется).
Шаг 5: Обработка прокси SOCKS5 (опционально)
Scrapy не поддерживает SOCKS5 изначально. Установите scrapy-socks:
pip install scrapy-socks
Добавьте промежуточное ПО SOCKS5 в settings.py:
DOWNLOADER_MIDDLEWARES = {
'scrapy_socks.Socks5DownloaderMiddleware': 543,
}
Затем установите прокси в мета-данных запроса как socks5://user:pass@host:port. Обратите внимание, что вы не можете использовать одновременно промежуточное ПО для ротации и scrapy-socks без пользовательской логики. Для большинства случаев использования HTTP-прокси проще и достаточно.
Шаг 6: Тестирование и проверка ротации
Запустите вашего паука и проверьте вывод:
scrapy crawl example -O output.json
Проверьте output.json. Если вы видите разные IP-адреса в разных запросах, ротация работает. Вы также можете добавить задержку между запросами, чтобы быть вежливым:
DOWNLOAD_DELAY = 2
Устранение неполадок
- 407 Proxy Authentication Required: Проверьте имя пользователя и пароль. Убедитесь, что они закодированы в URL. Убедитесь, что ваш план ProxyScrape активен.
- Connection refused or timeout: Подтвердите хост и порт. Проверьте ваш брандмауэр или VPN. Попробуйте другую конечную точку прокси.
- Frequent blocks: Переключитесь на резидентные прокси, увеличьте
DOWNLOAD_DELAYи включите ротацию. Датацентровые прокси чаще блокируются на строгих сайтах. - SOCKS5 errors: Убедитесь, что
scrapy-socksустановлен и настроен. Если вы получаете ошибки импорта, переустановите пакет. - SSL errors: Добавьте
DOWNLOAD_HANDLERSили используйтеhttpsв URL прокси, если целевой сайт этого требует.
Выбор правильного типа прокси для Scrapy
| Тип прокси | Лучше всего подходит для | Примечания |
|---|---|---|
| Резидентные | Скрапинг сайтов с защитой от ботов | Высокая анонимность, большой пул, медленнее |
| Датацентровые | Высокоскоростной скрапинг менее защищенных сайтов | Быстрее, дешевле, легче блокируются |
| Мобильные | Скрапинг мобильного контента или приложений | Редко блокируются, выше стоимость |
ProxyScrape предоставляет все три типа с гибкой оплатой. Начните с резидентных для большинства задач скрапинга.
Резюме
Вы научились интегрировать прокси ProxyScrape в Scrapy: установить Scrapy, получить учетные данные, настроить базовый прокси, создать промежуточное ПО для ротации и, при необходимости, использовать SOCKS5. Протестируйте свою настройку и отрегулируйте ротацию и задержки, чтобы избежать блокировок. Надежные резидентные и датацентровые прокси ProxyScrape с более чем 97 миллионами IP-адресов и долгосрочной бесперебойной работой делают их отличным выбором для проектов скрапинга на Python.