Cloudflare Workers

Détection des bots et VPN dans un Cloudflare Worker

Un Worker placé devant votre site vérifie chaque visiteur et transmet le résultat à votre serveur d'origine.

Installation

En ligne en trois étapes

  1. 1

    Déployer le Worker

    Ou utilisez le bouton de déploiement ci-dessus.

    shell
    git clone https://github.com/ipscanner/ipscanner-cloudflare
    cd ipscanner-cloudflare
    npm install
    npx wrangler deploy
  2. 2

    Ajouter votre clé API

    shell
    npx wrangler secret put IPSCANNER_API_KEY
  3. 3

    Le placer devant votre site

    Sur un domaine personnalisé ou workers.dev, faites plutôt pointer ORIGIN_URL vers votre backend.

    wrangler.jsonc
    "routes": [{
      "pattern": "example.com/*",
      "zone_name": "example.com"
    }]

Fonctionnement

Ce qui se passe à chaque requête

  1. 1

    Le Worker lit l'IP, le User-Agent et le JA4 du visiteur, quand Cloudflare le fournit.

  2. 2

    Agentscan et IP Detection tournent en parallèle, avec un cache par visiteur, et laissent passer la requête après 1,5 seconde.

  3. 3

    Le mode monitor envoie les en-têtes de verdict à votre serveur d'origine. Le mode enforce répond en plus par un 403 au visiteur bloqué.

  4. 4

    Les crawlers vérifiés passent toujours, et les en-têtes X-IPScanner-* envoyés par le client sont supprimés.

En-têtes

Les en-têtes reçus par votre serveur d'origine

Si une vérification échoue ou est ignorée, seul X-IPScanner-Status est défini.

En-têteExemple
X-IPScanner-ClassAgentscanhuman
X-IPScanner-ActionAgentscanallow
X-IPScanner-ConfidenceAgentscan0.92
X-IPScanner-Network-ClassIP Detectionresidential_clean
X-IPScanner-AnonymizedLes deuxfalse
X-IPScanner-RiskIP Detection12
X-IPScanner-CountryIP DetectionDE
X-IPScanner-StatusWorkerok

Réglages

Réglages

Définissez-les dans le bloc vars de wrangler.jsonc.

VariablePar défaut
MODEmonitor ajoute les en-têtes, enforce bloque aussimonitor
CHECK_AGENTLance Agentscantrue
CHECK_IPLance IP Detectiontrue
BLOCK_CLASSESClasses Agentscan à bloquer en mode enforcemalicious_automation
BLOCK_ANONYMIZEDBloque aussi VPN, proxy et Tor en mode enforcefalse
TIMEOUT_MSPar appel, ensuite la requête passe1500
AGENT_TTLSecondes de cache pour un verdict Agentscan600
IP_TTLSecondes de cache pour une recherche IP3600
SKIP_PATHSRegex des chemins exclus du contrôleRessources statiques
ORIGIN_URLBackend de destination hors routeVide

Questions

FAQ du Cloudflare Worker

Une requête par vérification activée pour chaque visiteur absent du cache, donc deux avec les deux vérifications. Les visites répétées pendant le TTL du cache ne coûtent rien.

Commencez en mode monitor

Observez les en-têtes pendant une semaine avant de bloquer quoi que ce soit.