Без прокси-IP работа с краулером будет сложной, поэтому многим инженерам по краулеру приходится покупать эффективный и стабильный прокси-IP. С качественным прокси-IP, можете ли вы расслабиться и расслабиться? Всё не так просто, и необходимо оптимизировать схему, рационально распределять ресурсы, повышать эффективность работы и выполнять работу с краулёрами более эффективно, быстрее и стабильно.
Вариант 1: Каждый процесс случайным образом выбирает список IP из интерфейсного API (например, извлекает 100 IP одновременно) для их переключения, а затем вызывает API для их получения, если он не работает, и общая логика выглядит следующей:
1. Каждый процесс (или поток) случайным образом получает пакет IP из интерфейса и пытается получить данные из списка IP по циклу.
2. Если доступ успешен, продолжайте брать следующий.
3. Если не получится (например, тайм-аут, код верификации и т.д.), возьмите партию IP из интерфейса и продолжайте попытки.
Недостатки решения: у каждого IP есть срок годности, если извлечь 100, то при использовании 10-го большинства последних могут быть недействительными. Если вы настроите HTTP-запрос с тайм-аутом соединения 3 секунды и тайм-аутом чтения 5 секунд, вы можете потерять 3-8 секунд времени, и эти 3-8 секунд можно будет захватить десятки раз.
Вариант 2: Каждый процесс принимает случайный IP из интерфейсного API для использования, а затем вызывает API для получения IP в случае неудачи; общая логика выглядит следующим образом:
1. Каждый процесс (или поток) случайным образом получает IP с интерфейса и использует этот IP для доступа к ресурсам.
2. Если доступ успешен, продолжайте брать следующий.
3. Если не получится (например, тайм-аут, код верификации и т.д.), случайным образом выберите IP с интерфейса и продолжайте попытку.
Недостатки: Вызов API для получения IP-адресов происходит очень часто, что создаёт серьёзную нагрузку на прокси-сервер, влияет на стабильность интерфейса API и может быть ограничено в извлечении. Эта схема также не подходит и не может функционировать устойчиво и стабильно.
Вариант 3: Сначала извлечь большое количество IP и импортировать их в локальную базу данных, а затем взять IP из базы данных, общая логика выглядит следующим образом:
1. Создайте таблицу в базе данных, напишите скрипт импорта, запрашите API в минуту (обратитесь к рекомендациям провайдера IP-прокси) и импортируйте список IP в базу данных.
2. Записывать время импорта, IP, порт, время истечения, статус доступности IP и другие поля в базе данных;
3. Напишите скрипт захвата, скрипт crab считывает доступный IP из базы данных, и каждый процесс получает IP из базы данных для использования.
4. Выполняйте сканирование, оценивайте результаты, обрабатывайте куки и т.д., если есть код подтверждения или сбой, отдайте этот IP и переходите на новый.
Это решение эффективно предотвращает расход ресурсов прокси-сервера, распределяет использование прокси-IP, является более эффективным и стабильным, а также обеспечивает надёжность и стабильность работы с краулером. |