KillBot: разбор метода защиты (август 2026)

Источник: работа-вахтой.рф, пробит через реальный браузер + CDP

Цель: применить в нашем антифроде

Как устроен KillBot

1. Механизм проверки

KillBot подменяет страницу на заглушку (меню для пауков + fingerprint-скрипты), пока не убедится, что запрос идёт от реального браузера.

2. Что он проверяет (fingerprint)

  • WebGL: vendor + renderer через UNMASKED_VENDOR_WEBGL / UNMASKED_RENDERER_WEBGL, MAX_TEXTURE_SIZE, MAX_VIEWPORT_DIMS
  • Canvas fingerprint: шрифты через getBoundingClientRect (div со скрытым текстом в Shadow DOM)
  • navigator.plugins: список плагинов (в headless пусто)
  • navigator.maxTouchPoints, devicePixelRatio
  • performance.memory: только в реальном Chrome (в headless undefined)
  • FPS через requestAnimationFrame (в headless = 0)
  • Timezone (Intl.DateTimeFormat), locale
  • navigator.webdriver: главный палево-флаг

3. Схема запросов

```

  1. 1. GET /lid_svo/ → заглушка + скрытое меню (ссылки с?from=bot)
  2. 2. GET r1-r5.<домен>/ping → проверка доступности серверов
  3. 3. GET r1.<домен>/js/cn.js → fingerprint-скрипт (исполняется)
  4. 4. GET r1.<домен>/r/in.php?png=&rr=
  5. 5. POST r1.<домен>/cn.php?url=&png=&raf=&lv=
  6. → gzip-сжатые данные fingerprint (Blob + CompressionStream)

  7. 6. Ответ cn.php → документ.dispatchEvent(kbDataReceived)
  8. 7. Если ок → перезагрузка с реальным контентом
  9. ```

4. Cookie

  • kbSession, kbUserID, kbAct, kbReloaded: ставятся JS-ом (document.cookie), не Set-Cookie
  • Поэтому requests без JS-движка не может получить cookies

5. Обход (что сработало)

Реальный браузер + CDP (remote-debugging-port):

```

Start-Process browser.exe --remote-debugging-port=9222 --user-data-dir=<профиль>

затем Playwright: connect_over_cdp("http://127.0.0.1:9222")

```

Ключ: браузер запускается как обычная программа (не через Playwright API), поэтому:

  • нет флага HeadlessChrome в UA
  • реальный WebGL/Canvas/plugins/memory
  • реальный FPS

6. Что НЕ работало (уроки)

  • Playwright headless/headful: палится (navigator.webdriver, WebGL SwiftShader, plugins=[])
  • Мобильный UA: тоже блок
  • Перехват ответов cn.php: даёт только меню
  • Подмена JS: ошибка (нужен JS, не текст)
  • Прокси RU: не помогает (IP не главное)
  • Dolphin Anty бесплатный план: без автоматизации
  • puppeteer-extra-stealth: не пробивает (KillBot проверяет глубже)

Выводы для НАШЕГО антифрода

  1. 1. Fingerprint-проверка: WebGL vendor/renderer + canvas + plugins + FPS, отсекает headless-ботов
  2. 2. Проверка navigator.webdriver: главный маркер
  3. 3. Заглушка для пауков: меню с?from=bot (SEO-обман пауков)
  4. 4. gzip-сжатие fingerprint при передаче: защита от перехвата
  5. 5. Флаг kbReloaded: защита от мгновенного релоада (заставляет ждать)
  6. 6. Реальный браузер обходит всёЗначит, наш антифрод должен не только скриптом, но и поведением (тайминги, скроллы)

Заметка про пробив

  • Пробил: реальный Yandex Browser + CDP (remote-debugging-port=9222)
  • Скрипт: cdp_real_browser.py
  • Файлы: rabota_cdp_real.html, rabota_stealth.html, rabota_dolphin.html
+7-926-656-06-93