Запит ШІ-сканера отримує сторінку перевірки на бота зі статусом 200

У звітіAn AI crawler request receives a challenge page instead of the content

ai_bot_ua_served_challenge_content · Потребує перегляду

Коротка відповідь

Це з’являється, коли два запити з рядком user-agent підтримуваного ШІ-сканера отримують повні відповіді HTML зі статусом 200 і фізичним заголовком cf-mitigated: challenge, тоді як запити браузера, що відповідають умовам, отримують звичайні сторінки. Імітований запит отримав перевірку Cloudflare замість звичайної сторінки. Перевірте, чи ця політика доступу задумана; поведінку справжнього сканера не перевірено.

Серйозність: Середня.

Чому це важливо

Відповідь із перевіркою на бота може мати статус 200, тож сам статус не може показати, що отримано звичайну сторінку. Cloudflare документує cf-mitigated: challenge як ознаку відповіді з перевіркою. Ця перевірка порівнює зафіксовані відповіді на імітований запит і на запит браузера; вона не перевіряє, чи може справжній сканер пройти перевірку.

Що зробити

  1. Перегляньте знахідку: у ній названо сканер і перелічено сторінки із заголовком, отриманим на кожен запит сканера.
  2. У Cloudflare перегляньте правила безпеки й налаштування ботів, які застосовують перевірку до цього user-agent.
  3. Якщо ви хочете, щоб сканер читав ваші сторінки, виключіть його з перевірки. Якщо ні, заблокувати його й зазначити це в robots.txt зрозуміліше, ніж застосовувати перевірку.

Коли залишити як є: якщо ви застосовуєте перевірку до цього сканера навмисно, це можна залишити. Знахідка показує, що отримав запит сканера; вона не стверджує, що правило помилкове.

Що ми читаємо

Для головної сторінки й вибірки просканованих сторінок ми надсилаємо два запити з user-agent настільного браузера й два з опублікованим рядком user-agent сканера, не змінюючи жодного іншого заголовка. Сторінка порівнюється лише тоді, коли обидва запити браузера повертають повну сторінку 200 з однаковим вмістом і без заголовка перевірки на бота.

Про сторінку повідомляється, коли обидва запити сканера повертають повну HTML-сторінку 200 рівно з одним заголовком відповіді cf-mitigated зі значенням challenge. Сторінка проходить перевірку, коли запити сканера не мають такого заголовка й показують той самий основний вміст, що й запити браузера.

Приклад і докази

Ілюстративний приклад — один аудит, а не реальний результат.

Аудит bakery.example двічі запитує одну сторінку з user-agent сканера:

GET https://bakery.example/recipes/sourdough/
User-Agent: (the GPTBot string that OpenAI publishes, version 1.4)

HTTP/1.1 200 OK
content-type: text/html
cf-mitigated: challenge

Обидва запити сканера повертають цю відповідь, а обидва запити браузера повертають сторінку рецепта без цього заголовка, тому сторінку внесено до знахідки для цього сканера.

Підтвердити й перевірити знову

Перевірте самі: запитайте одну зі сторінок у списку з рядком, який публікує оператор сканера, і пошукайте заголовок відповіді cf-mitigated.

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

Обмеження та джерела

Розпізнається лише заголовок перевірки Cloudflare. Перевірка від іншого постачальника, сторінка, що згадує CAPTCHA, віджет підтвердження або вміст, який просто відрізняється від отриманого браузером, лишаються непідтвердженими — про них не повідомляється, і вони не зараховуються як пройдені.

Повторюваний заголовок cf-mitigated, будь-яке інше значення, заголовок, який не вдалося прочитати, неповне тіло й статус, відмінний від 200, також лишаються непідтвердженими. Якщо запит браузера теж спрямовано на перевірку, нічого не повідомляється.

Запит копіює рядок user-agent, який публікує оператор сканера, і надсилається з власного місця аудиту. Сайт, що вирішує за мережевою адресою, може відповідати справжньому сканеру інакше — в будь-який бік.

Перевірка використовує рядок GPTBot, опублікований OpenAI, — версію 1.4 на момент перегляду. Сканер, оператор якого публікує лише токен robots.txt без повного рядка user-agent, не запитується й лишається непідтвердженим.

Упевненість: Середня, бо результат спирається на один заголовок відповіді, який Cloudflare документує для сторінок перевірки, побачений у двох запитах; тіло сторінки не читається й не оцінюється.

Джерела

  • Cloudflare, Налаштування robots.txt — зазначає, що дотримання robots.txt добровільне, що файл висловлює побажання, але технічно не заважає сканерам отримувати доступ до вмісту, і що обмеження доступу забезпечуються іншими засобами. Перевірено 14 жовтня 2026.
  • Cloudflare, Виявлення відповіді зі сторінкою перевірки — зазначає, що кожна відповідь зі сторінкою перевірки Challenge Page містить заголовок cf-mitigated, що challenge — його єдине допустиме значення і що цей заголовок — надійний спосіб визначити, чи було відповідь спрямовано на перевірку. Перевірено 14 жовтня 2026.
  • Anthropic, Чи сканує Anthropic дані з інтернету і як власники сайтів можуть заблокувати сканер? — зазначає, що боти Anthropic не намагаються обходити CAPTCHA на сайтах, які сканують. Перевірено 14 жовтня 2026.
  • OpenAI, Огляд сканерів OpenAI — публікує рядок user-agent, який надсилає GPTBot, із версією 1.4 у прикладі та приміткою, що номер версії може змінюватися, і зазначає, що GPTBot сканує вміст, який може використовуватися для навчання моделей OpenAI. Перевірено 14 жовтня 2026.

Редакційна перевірка: 15 жовтня 2026