Resumen
Ejecuta un small canary scraper fleet contra your mas critico objetivo sitios cada 15 minutos. Cuando Scavio's canary solicitudes iniciar hitting 403 o challenge paginas, it emits un advertencia 30 to 90 minutos antes de your produccion scrapers fall sobre. Early advertencia da your team time to rotate tactics antes de el business impact hits.
Desencadenador
Cron programar (cada 15 minutos)
Programación
Every 15 minutos
Pasos del flujo de trabajo
Maintain canary objetivo lista
Critico sitios your produccion scrapers depend on (e.g., 10 to 50 objetivos).
Scavio probar consulta per objetivo
Ejecutar un cheap Scavio solicitud at el objetivo y inspect respuesta estado y cuerpo.
Detectar CF fingerprints
Marcar presence of cf-ray, challenge-platform, o cf-chl-bypass tokens in respuesta.
Puntuacion tendencia
Rolling 1-hora window; alerta if >30% of canaries mostrar CF challenges.
PagerDuty alerta
Fire un alerta to el scraping on-call rotation con affected objetivos.
Log to timeseries DB
Persist cada probe to InfluxDB for post-mortem timelines.
Implementacion en Python
import os, requests, time
API_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": API_KEY}
TARGETS = ["example.com", "news-site.com"]
def probe(domain):
r = requests.post("https://api.scavio.dev/api/v1/search",
headers=H, json={"query": f"site:{domain}"}, timeout=10)
body = r.text.lower()
blocked = any(tok in body for tok in ["cf-ray", "challenge-platform", "cf-chl-bypass"])
return {"domain": domain, "blocked": blocked, "status": r.status_code}
results = [probe(d) for d in TARGETS]
blocked_pct = sum(1 for r in results if r["blocked"]) / len(results)
if blocked_pct > 0.3:
print("ALERT: Cloudflare block wave detected", blocked_pct)Implementacion en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
const H = { "x-api-key": API_KEY, "content-type": "application/json" };
const TARGETS = ["example.com", "news-site.com"];
async function probe(domain) {
const r = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST", headers: H, body: JSON.stringify({ query: "site:" + domain })
});
const body = (await r.text()).toLowerCase();
const blocked = ["cf-ray", "challenge-platform", "cf-chl-bypass"].some(t => body.includes(t));
return { domain, blocked, status: r.status };
}
const results = await Promise.all(TARGETS.map(probe));
const pct = results.filter(r => r.blocked).length / results.length;
if (pct > 0.3) console.log("ALERT: Cloudflare block wave", pct);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA