INTEGRITY Документация

GraphQL API

Аналитика AI Crawl Control доступна через Cloudflare GraphQL Analytics API. Вы можете запрашивать те же данные, что отображаются в панели управления, чтобы создавать собственные отчёты, интегрироваться с системами мониторинга или экспортировать данные для анализа. Тестируйте запросы с помощью GraphQL API Explorer ↗, либо перехватите точные запросы, которые использует панель управления, с помощью Chrome DevTools.

Основные фильтры

Фильтр Описание Доступность
requestSource: "eyeball" Учитываются только реальные запросы клиентов. Внутренний трафик Cloudflare исключён. Все тарифы
userAgent_like: "%...%" Фильтр по user-agent. Можно подделать. Все тарифы
edgeResponseStatus_geq / _lt Фильтрация по диапазону кодов состояния HTTP. Все тарифы
clientRequestPath_like: "%...%" Фильтрация по шаблону пути URL. Все тарифы
clientRefererHost_like: "%...%" Фильтр по домен реферера. Только платные тарифы
botDetectionIds_hasany: [...] Фильтр по Detection ID. Надёжно верифицировано Cloudflare. Bot Management

Примеры запросов

Получение запросов ИИ-краулеров в динамике с использованием ID обнаружения

{
	viewer {
		zones(filter: { zoneTag: "<ZONE_ID>" }) {
			httpRequestsAdaptiveGroups(
				filter: {
					datetime_geq: "2027-01-01T00:00:00Z"
					datetime_leq: "2027-01-02T00:00:00Z"
					requestSource: "eyeball"
					# 123815556 = GPTBot, 132995013 = ChatGPT-User, 126255384 = OAI-SearchBot
					botDetectionIds_hasany: [123815556, 132995013, 126255384]
				}
				limit: 5000
			) {
				count
				dimensions {
					datetimeHour
					botDetectionIds
					clientRequestHTTPHost
				}
				sum {
					edgeResponseBytes
				}
			}
		}
	}
}

Получение запросов ИИ-краулеров в динамике с использованием User-Agent

{
	viewer {
		zones(filter: { zoneTag: "<ZONE_ID>" }) {
			httpRequestsAdaptiveGroups(
				filter: {
					datetime_geq: "2027-01-01T00:00:00Z"
					datetime_leq: "2027-01-02T00:00:00Z"
					requestSource: "eyeball"
					userAgent_like: "%GPTBot%"
				}
				limit: 5000
			) {
				count
				dimensions {
					datetimeHour
					userAgent
					clientRequestHTTPHost
				}
				sum {
					edgeResponseBytes
				}
			}
		}
	}
}

Получение популярных путей, сканируемых краулерами

{
	viewer {
		zones(filter: { zoneTag: "<ZONE_ID>" }) {
			httpRequestsAdaptiveGroups(
				filter: {
					datetime_geq: "2027-01-01T00:00:00Z"
					datetime_leq: "2027-01-02T00:00:00Z"
					requestSource: "eyeball"
					edgeResponseStatus_geq: 200
					edgeResponseStatus_lt: 400
					userAgent_like: "%GPTBot%"
				}
				limit: 5000
				orderBy: [count_DESC]
			) {
				count
				dimensions {
					clientRequestPath
					clientRequestHTTPHost
				}
			}
		}
	}
}

Получение данных о реферальном трафике от ИИ

{
	viewer {
		zones(filter: { zoneTag: "<ZONE_ID>" }) {
			httpRequestsAdaptiveGroups(
				filter: {
					datetime_geq: "2027-01-01T00:00:00Z"
					datetime_leq: "2027-01-02T00:00:00Z"
					requestSource: "eyeball"
					OR: [
						{ clientRefererHost_like: "%.chatgpt.com%" }
						{ clientRefererHost: "chatgpt.com" }
						{ clientRefererHost_like: "%.perplexity.ai%" }
						{ clientRefererHost: "perplexity.ai" }
					]
				}
				limit: 5000
				orderBy: [count_DESC]
			) {
				count
				dimensions {
					datetimeHour
					clientRefererHost
				}
			}
		}
	}
}

Получение объёма переданных данных по краулерам

{
	viewer {
		zones(filter: { zoneTag: "<ZONE_ID>" }) {
			httpRequestsAdaptiveGroups(
				filter: {
					datetime_geq: "2027-01-01T00:00:00Z"
					datetime_leq: "2027-01-02T00:00:00Z"
					requestSource: "eyeball"
					userAgent_like: "%GPTBot%"
				}
				limit: 5000
				orderBy: [sum_edgeResponseBytes_DESC]
			) {
				count
				dimensions {
					userAgent
				}
				sum {
					edgeResponseBytes
				}
			}
		}
	}
}