insane-search: hice que Claude Code siguiera intentando hasta el final cuando se topa con un 403
(github.com/fivetaku)No me gustaba que Claude Code se rindiera cuando encontraba un 403.
"Léeme esta publicación de Naver Blog" → 403. "Elige teclados de menos de 100,000 won en Coupang" → 403. "¿Qué dice este hilo de Reddit?" → bloqueado. Al final yo terminaba entrando desde el navegador para copiar y pegar el contenido una y otra vez. Se suponía que le estaba encargando el trabajo a la IA, así que sentía absurdo que al final yo fuera quien terminaba haciéndolo.
Probé los MCP existentes, pero tenían problemas. La mayoría estaban atados a una sola plataforma específica (solo Twitter, solo YouTube), exigían registrarse con API key/OAuth, o ya venían con el sesgo de que "este sitio está bloqueado", así que ni siquiera lo intentaban. Los sitios cambian todos los días, y los métodos también pueden funcionar en este momento; no tenía sentido rendirse solo porque alguna vez hubo un bloqueo.
Por eso hice una capa de selección de método. No es un scraper, sino una habilidad que va probando endpoints públicos y técnicas estándar en orden hasta que logre pasar.
Cómo funciona
Cuando Claude Code intenta acceder a una URL, lo ayuda un programador adaptativo de 4 fases. Solo pasa a la siguiente fase si la fase anterior falla o detecta señales de bloqueo.
- Fase 0: indexa solo endpoints especiales que no se pueden descubrir con una cadena genérica (15 grupos) — X Syndication, Reddit
.json, HN Firebase, yt-dlp con 1,858 sitios - Fase 1: sondas ligeras en paralelo — WebFetch, Jina Reader, curl con UA de Chrome/Mobile/Googlebot, variaciones de URL
m.{domain}/.json//rss - Fase 2: impersonación TLS —
curl_cffien orden safari → chrome → firefox (si no está instalado, ejecutapip installautomáticamente) - Fase 3: navegador real — renderizado con Playwright MCP + descubrimiento de API ocultas (
network_requests) - Si detecta login/paywall, termina como "requiere autenticación". No sigue intentando inútilmente
Además, en todas las respuestas HTML extrae también etiquetas OGP y datos estructurados JSON-LD. Aunque no pueda traer el cuerpo completo, sí puede obtener el título, el precio o el perfil.
Funciona especialmente bien con sitios coreanos
- Naver Blog → en la mayoría de los casos se resuelve con la variación a URL móvil
- Coupang → extrae JSON-LD
ItemListconcurl_cffi safarien la Fase 2 - DC Inside/FM Korea/Clien/Daangn/Yozm IT/Wishket → todos se leen con Jina Reader o curl
- Naver Finance → API JSON no oficial
api.finance.naver.com/siseJson.naver(sin autenticación) - 9 medios coreanos → índice RSS + fallback a Google News RSS
Principio clave
No crear sesgos. No hice una lista de "este sitio es difícil". Tampoco se salta algo porque falten dependencias: las instala y lo intenta. Porque tanto el sitio como el método pueden funcionar ahora mismo.
Instalación
/plugin marketplace add https://github.com/fivetaku/gptaku_plugins.git
/plugin install insane-search
Reinicia y listo. No hay API keys, registros ni variables de entorno. Si hablas como siempre, se activa automáticamente cuando encuentra una URL bloqueada.
2 comentarios
El agent browser de vercel-labs está buenísimo.
¿No se podría hacer que use
browser-usedirectamente?