Cloudflare Workers

Bot- en VPN-checks in een Cloudflare Worker

Eén Worker vóór je site checkt elke bezoeker en vertelt je originserver wat hij vond.

Installatie

Live in drie stappen

  1. 1

    Deploy de Worker

    Of gebruik de Deploy-knop hierboven.

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

    Voeg je API-sleutel toe

    shell
    npx wrangler secret put IPSCANNER_API_KEY
  3. 3

    Zet hem vóór je site

    Op een eigen domein of workers.dev zet je ORIGIN_URL in plaats daarvan op je backend.

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

Zo werkt het

Wat er bij elk verzoek gebeurt

  1. 1

    De Worker leest het IP, de User-Agent en JA4 van de bezoeker, als Cloudflare JA4 levert.

  2. 2

    Agentscan en IP Detection draaien parallel, met cache per bezoeker, en laten het verzoek na 1,5 seconde door.

  3. 3

    In monitor-modus gaan oordeel-headers naar je originserver. In enforce-modus krijgt een geblokkeerde bezoeker ook een 403.

  4. 4

    Geverifieerde crawlers komen altijd door, en X-IPScanner-*-headers die de client meestuurt, worden verwijderd.

Headers

Headers die je originserver ontvangt

Als een check mislukt of wordt overgeslagen, is alleen X-IPScanner-Status gezet.

HeaderVoorbeeld
X-IPScanner-ClassAgentscanhuman
X-IPScanner-ActionAgentscanallow
X-IPScanner-ConfidenceAgentscan0.92
X-IPScanner-Network-ClassIP Detectionresidential_clean
X-IPScanner-AnonymizedBeidefalse
X-IPScanner-RiskIP Detection12
X-IPScanner-CountryIP DetectionDE
X-IPScanner-StatusWorkerok

Instellingen

Instellingen

Stel deze in via het vars-blok van wrangler.jsonc.

VariabeleStandaard
MODEmonitor zet headers, enforce blokkeert ookmonitor
CHECK_AGENTVoert Agentscan uittrue
CHECK_IPVoert IP Detection uittrue
BLOCK_CLASSESAgentscan-klassen die enforce-modus blokkeertmalicious_automation
BLOCK_ANONYMIZEDBlokkeert in enforce-modus ook VPN, proxy en Torfalse
TIMEOUT_MSPer aanroep, daarna gaat het verzoek door1500
AGENT_TTLSeconden dat een Agentscan-oordeel in de cache blijft600
IP_TTLSeconden dat een IP-lookup in de cache blijft3600
SKIP_PATHSPad-regex die de check overslaatStatische assets
ORIGIN_URLBackend om naar door te sturen zonder routeLeeg

Vragen

FAQ over de Cloudflare Worker

Eén verzoek per ingeschakelde check voor elke bezoeker die niet in de cache staat, dus twee met beide checks aan. Herhaalbezoeken binnen de cache-TTL kosten niets.

Begin in monitor-modus

Bekijk de headers een week voordat je iets blokkeert.