DNB API перестав віддавати JSON — довелося перейти на Selenium + AI

💡 Усі статті, обговорення, новини про AI — в одному місці. Приєднуйтесь до AI спільноти!

Робив парсер для Dun & Bradstreet. Спочатку все було стандартно — requests, API, JSON, швидко і стабільно.

А потім воно просто перестало працювати.

Що зламалося

  • API відповідає, але JSON пустий або кривий;
  • іноді 200 OK, але даних нема;
  • при цьому в браузері той самий запит працює нормально.

Тобто класика: API не впав — він просто перестав пускати бота.

Чому так

Скоріш за все:

  • антибот-фільтри;
  • перевірка headers / fingerprint;
  • перевірка поведінки (cookies, JS і т.д.)

І requests тут вже не прокатує.

Що пробував

  • крутити headers;
  • додавати retry + delay;
  • використовувати session.

Не допомогло.

Як вирішив

Повністю переписав під Selenium.

Тепер логіка така:

  • відкриваємо DNB Business Directory;
  • вводимо пошук;
  • ходимо по сторінках;
  • збираємо лінки;
  • відкриваємо кожну компанію;
  • дістаємо дані зі сторінки.

Тобто замість API — просто емулюємо користувача.

Чому це працює

Бо Selenium:

  • виконує JS;
  • працює з cookies;
  • виглядає як реальний юзер.

І антибот його пропускає.

Додав ще AI

Після збору компаній виникла інша задача — зрозуміти, чим вони займаються.

Зробив окремий модуль 👉

Що він робить:

  • бере сайт компанії;
  • тягне кілька сторінок;
  • чистить HTML;
  • відправляє текст у Groq;
  • отримує короткий опис + список послуг.

Бонус: перевірка на «поганий» контент

Перед AI є фільтр:

  • gambling;
  • adult;
  • medical;
  • affiliate і т.д.

Якщо щось знаходить — помічає сайт як ризиковий.

Фінальний пайплайн

  • Selenium → збір компаній;
  • парсинг профілів;
  • отримання сайтів;
  • скрапінг сайтів;
  • AI-сумаризація;
  • Excel.

Висновок

  • якщо API «ламається» — це часто антибот;
  • якщо в браузері працює — Selenium майже завжди врятує;
  • AI добре доповнює парсинг, але треба обробляти ліміти.

Якщо коротко: перестав працювати API → зробив браузер → додав AI → стало навіть краще, ніж було 😄

👍ПодобаєтьсяСподобалось1
До обраногоВ обраному0
LinkedIn
Ctrl + Enter
Ctrl + Enter
Якщо коротко: перестав працювати API → зробив браузер → додав AI → стало навіть краще, ніж було 😄

Якщо api фільтрує прямі запити без танців з емуляцією браузера, то це вже не api а якась, пробачте, маячня.

Згоден, виглядає дивно 🙂
Але на практиці це досить типова історія: API є, але працює лише в контексті браузера — з cookies, JS і нормальним fingerprint.

Тому requests уже не проходить, а Selenium — проходить, бо емулює поведінку користувача.

Є публічне API для користувачів (платне або ні), а є внутрішнє, яке захищають тим чи іншим способом. Так що все ок.

Ймовірно це і є внутрішній API.

Мені його просто передали, сам я його не реверсив. У DevTools він не світиться (навіть у fetch/XHR), тому підозрюю, що це або сторонній інструмент, або виклики йдуть не напряму з фронта.

Спочатку все працювало через requests, але потім почали приходити 200 OK без даних — класичний soft-block.

У підсумку перейшов на Selenium і закрив питання

То я в курсі. Користування внутрішнім api це фактично скрапінг, і там вже ніхто не гарантує ніякої стабільності...може вони взагалі проти використання.

Але ж тема саме про парсер, який тягне дані...

відправляє текст у Groq;

Groq чи Grok?

Groq
Це API для роботи з LLM (швидкі inference-моделі).
Grok — це модель від xAI, інша історія.

Підписатись на коментарі