Як уникнути обмежень при веб-скрейпінгу

image

Зміст:

  1. Виробляємо стратегію веб-скрейпінгу
  2. Фокусуємося на HTTP
  3. Дивимося на HTTP-реакції
  4. Підсумовуємо

Бізнес-місія етичного сервісу Dexodata — допомогти з безперебійним збором веб-даних для машинного навчання, моніторингу ринків та відповідно до інших трендів скрапінгу 2025 року. Механізми захисту сайтів від автоматизованого дата-харвестингу стали складнішими, вони вивчають користувацьку поведінку та метадані сесій. Просто купити проксі з ротацією може виявитися недостатнім. Щоб користувачі зорієнтувалися в ситуації, ми склали гайд по додатковим заходам.

Виробляємо стратегію веб-скрейпінгу

На досвіді Dexodata, при підготовці до раунду дата-харвестингу варто продумати три аспекти:

Оренда проксі   Оренда проксі з геотаргетингом — відправна точка для витягування географічно детермінованих датасетів. Перенаправляючи запити через IP, користувач мімікує під трафік з потрібних локацій, знижує ризик ідентифікації та блокувань. Звертайтеся до Dexodata, щоб спробувати проксі безкоштовно для перших тестів  
Налаштування скрейпінг-сесії 
  1. Робота з хедерами та cookie-файлами первинна;
  2. Використовуйте HTTP-заголовки для еймуляції щоденних браузерних запитів. Пам'ятайте про регулярну актуалізацію списків рядків User-Agent;
  3. Продумайте аспекти зберігання та повторного використання cookie-файлів для безперервності веб-скрейпінгу.
Headless-браузери

Якщо потрібен рендеринг сторінок на JavaScript з автоматизацією користувацьких дій, headless-браузери (з опорою на Puppeteer або Selenium) прийдуть на допомогу. Ці інструменти здатні обробляти JS так само, як реальне ПЗ для веб-серфінгу. Що ускладнює спроби зафіксувати факт автоматизованого дата-харвестингу

 

Фокусуємося на HTTP

 

Перед початком роботи з захисними алгоритмами веб-ресурсів Dexodata рекомендує спробувати проксі, безкоштовно отримати консультацію служби підтримки по налаштуванням зовнішнього ПЗ та спланувати роботу зі списками HTTP-заголовків (headers)

 

1. HTTP-заголовки

Сайти часто моніторять і накладають обмеження на запити, надіслані з застарілими або підозрілими рядками в User-Agent. Приходиться налаштовувати їх, щоб виклик нагадував стандартну користувацьку сесію.

Приклад від Dexodata:

import requests

# Визначте заголовки, які імітують реальний браузер

headers = {

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',

    'Accept-Language': 'en-UK,en;q=0.9',

    'Referer': 'https://www.veryspecialinstance.co.uk/'

}

# Виконайте запит з вибраними заголовками

response = requests.get('https://www.veryspecialinstance.co.uk/data', headers=headers)

print(response.status_code)

print(response.text)

Як видно в представлених блоках, ми прописали заголовки, які зображують непомітний сеанс серфінгу, з User-Agent, Accept-Language та Referer.

 

2. HTTP-рушії

Вибір відповідних HTTP-рушіїв має вирішальне значення для скрапінгу при оренді проксі (резидентних, мобільних тощо). Пропонуємо придивитися до двох фреймворків: curl та бібліотека requests для Python:

  • curl. Універсальний інструмент для командного рядка, за допомогою якого можна попрацювати з HTTP-запитами. Він гнучкий і легкий, але вимагає ручного налаштування заголовків та інших характеристик;

Приклад від Dexodata:

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" \

     -H "Accept-Language: en-UK,en;q=0.9" \

     -H "Referer: https://www.veryspecialinstance.co.uk/" \

     https://www.veryspecialinstance.co.uk

  • requests. Бібліотека Python, яка оптимізує процес управління хедерами та дата-харвестингом через зовнішні IP. Найкраще, якщо купити проксі з ротацією.

Приклад від Dexodata:

import requests

# Запустіть сесію

session = requests.Session()

session.headers.update({

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',

    'Accept-Language': 'en-UK,en;q=0.9',

    'Referer': 'https://www.veryspecialinstance.co.uk/'

})

# Виконайте запити до сайту з заданими налаштуваннями сесії

response = session.get('https://www.veryspecialinstance.co.uk/data')

print(response.status_code)

print(response.text)

 

Дивимося на HTTP-реакції 

Оперативно зчитувати HTTP-відповіді так само важливо для веб дата-харвестингу як орендувати проксі у етичної екосистеми, і сформувати релевантні цифрові відбитки браузера. Коди відповідей, які отримує скрапінгове ПЗ, такі:

  • 200. Результативний запит; 
  • 301/302. Ресурс переїхав на інший URL; 
  • 403. Немає дозволу на доступ до інформації, сигнал про блокування; 
  • 404. Ресурсу не існує; 
  • 429. Кількість запитів за період часу перевищує допустимі ліміти, вказівка на межу по частоті їх відправки; 
  • 500. Труднощі з цільовим сервером (вони зовсім не обов'язково пов'язані з веб-скрейпінгом). 

 

Підсумовуємо

 

Обхід обмежень при веб-скрейпінгу вимагає підготовки. Для початку варто купити проксі з ротацією. Потім підготувати сесію та налаштувати HTTP-заголовки та cookie-файли. І постійно моніторити процес, щоб реагувати на HTTP-відповіді. Перший крок зробити просто — створити акаунт на сайті Dexodata та спробувати проксі безкоштовно!

Back

Ми їмо печиво. Дізнайтеся більше про політику використання файлів cookie