Без проксі-IP робота з краулерами буде складною, тому багатьом інженерам потрібно купувати ефективні та стабільні проксі-IP. З якісною проксі-IP, чи можете ви розслабитися? Все не так просто, і також необхідно оптимізувати схему, раціонально розподіляти ресурси, підвищувати ефективність роботи та виконувати роботу з краулерами ефективніше, швидше та стабільніше.
Варіант 1: Кожен процес випадково вибирає список IP-адрес з інтерфейсного API (наприклад, витягує 100 IP одночасно) для їх перегляду, а потім викликає API для їх отримання, якщо він не вдається, і загальна логіка така:
1. Кожен процес (або потік) випадковим чином отримує партію IP-адрес з інтерфейсу та намагається отримати дані зі списку IP у циклі.
2. Якщо доступ успішний, продовжуйте брати наступний.
3. Якщо не працює (наприклад, тайм-аут, код верифікації тощо), візьміть пакет IP з інтерфейсу і продовжуйте спроби.
Недоліки рішення: кожна IP має термін придатності, якщо витягнути 100, то при використанні десятої IP більшість останніх можуть бути недійсними. Якщо ви налаштуєте 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. Напишіть скрипт захоплення, скрипт краба зчитує доступну IP з бази даних, і кожен процес отримує IP з бази даних для використання.
4. Виконайте сканування, оцініть результати, обробіть файли cookie тощо, якщо є код перевірки або збій, віддайте цю IP і змініть на нову IP.
Це рішення ефективно уникає використання ресурсів проксі-сервера, розподіляє використання проксі-IP, є більш ефективним і стабільним, а також забезпечує довговічність і стабільність роботи з краулером. |