Cloudflare Worker

Déployez un Worker Cloudflare qui intercepte les visites de bots IA et les envoie à Robot Speed. Fonctionne avec le plan gratuit Cloudflare.

Prérequis

  • Un compte Cloudflare (gratuit)
  • Votre domaine configuré sur Cloudflare avec le proxy activé (nuage orange)
  • Votre clé API Robot Speed (Settings → API dans votre dashboard)
1

Créer un Worker

  1. Allez dans votre Cloudflare Dashboard
  2. Cliquez sur Workers & Pages dans la sidebar
  3. Cliquez Create Worker
  4. Donnez-lui un nom (ex: ai-bot-tracker)
2

Coller le code

Remplacez le code par défaut par le code ci-dessous, puis cliquez Deploy.

export default {
  async fetch(request, env, ctx) {
    // Forward the request to your origin — transparent proxy
    const response = await fetch(request);

    // Detect AI bots from user-agent
    const ua = request.headers.get("user-agent") || "";
    const bots = [
      ["ChatGPT-User", "openai"],
      ["OAI-SearchBot", "openai"],
      ["PerplexityBot", "perplexity"],
      ["Perplexity-User", "perplexity"],
      ["Claude-User", "anthropic"],
      ["Claude-SearchBot", "anthropic"],
      ["Google-Extended", "google"],
      ["Google-Agent", "google"],
      ["MistralAI-User", "mistral"],
      ["xAI-Grok", "xai"],
      ["GrokBot", "xai"],
      ["Grok-DeepSearch", "xai"],
      ["DeepSeekBot", "deepseek"],
      ["cohere-ai", "cohere"],
      ["Applebot-Extended", "apple"],
    ];

    const bot = bots.find(([sig]) => ua.includes(sig));

    if (bot) {
      const url = new URL(request.url);
      const path = url.pathname;

      // Skip noise: feeds, tags, static files
      if (!/\/(feed|tag|category)\b/i.test(path) && !/\.\w{2,4}$/.test(path)) {
        // Fire-and-forget — never blocks the response
        ctx.waitUntil(
          fetch(env.ANALYTICS_ENDPOINT, {
            method: "POST",
            headers: {
              "Content-Type": "application/json",
              "X-API-Key": env.ANALYTICS_KEY,
            },
            body: JSON.stringify({
              bot_name: bot[0],
              bot_provider: bot[1],
              url_path: path,
              user_agent: ua.slice(0, 500),
              host: request.headers.get("host")?.replace(/^www\\./, ""),
              source: "cloudflare_worker",
            }),
          }).catch(() => {})
        );
      }
    }

    // Return the original response — zero latency impact
    return response;
  },
};
3

Configurer les variables

Allez dans les Settings du Worker → Variables, et ajoutez :

ANALYTICS_ENDPOINT
https://www.robot-speed.com/api/ai-bot-visits
ANALYTICS_KEY

Votre clé API Robot Speed — trouvez-la dans votre dashboard : Settings → API

4

Ajouter la route

  1. Dans le Worker, allez dans TriggersAdd Route
  2. Route : yourdomain.com/*
  3. Sélectionnez votre zone (domaine)
5

Vérifier le proxy DNS

Dans DNS → Records, assurez-vous que votre domaine a le nuage orange (Proxied) activé. Si le nuage est gris (DNS only), le Worker ne verra pas le trafic.

Vérification

Testez avec cette commande :

curl -H "User-Agent: Mozilla/5.0 (compatible; ChatGPT-User/1.0)" https://yourdomain.com/

Quelques secondes après, vous devriez voir la mention dans votre dashboard Robot Speed.