CrawlForge MCP
Política

Verificación del rastreador CrawlForge

Una solicitud en sus registros dice ser CrawlForge. Esta página explica cómo comprobar que realmente lo es, cómo bloquearla si prefiere que no le descarguemos páginas y a quién escribir.

Compare el token, no la cadena completa El token de producto CrawlForge es estable. La versión que va detrás cambia en cada publicación y no es la misma en nuestras dos superficies, así que una regla escrita contra un User-Agent completo dejará de coincidir. Compare el token; y si quiere una prueba en lugar de una afirmación, verifique la firma.

Cómo se identifica CrawlForge

Cada página que descarga CrawlForge se descarga con un único User-Agent honesto: el token de producto CrawlForge, una versión y una URL de contacto. No hay una segunda identidad, ni rotación, ni un valor predeterminado que imite a un navegador; en las reglas de funcionamiento del rastreador se explica por qué eso es una regla y no una preferencia.

CrawlForge funciona en dos superficies y ambas envían este token: la API REST alojada y el paquete crawlforge-mcp-server que los clientes ejecutan por su cuenta. Cada una envía la versión de su propio paquete, de modo que el segmento de versión varía según la superficie y la publicación, mientras que el token no.

El patrón del User-Agent

Esto es lo que conviene comparar. Solo varía el segmento de versión.

User-Agent patternBash
CrawlForge/<version> (+https://crawlforge.dev)

Lo que envía hoy la API alojada

Se genera a partir de la misma constante que envía el rastreador, así que esta página no puede desincronizarse del encabezado. Se muestra como ejemplo, no como una cadena con la que comparar: la próxima publicación la cambia. El servidor MCP envía la misma forma con la versión de su propio paquete.

request headersBash
User-Agent: CrawlForge/1.0.0 (+https://crawlforge.dev)

Cómo reconocernos en sus registros

Una comparación por prefijo con el token sobrevive a todas las publicaciones que hagamos.

matching us in your logsBash
# Match the product token. Anchored, and stopping at the slash, so the
# version cannot break the match on our next release.
^CrawlForge/

El token retirado CrawlForge-Bot

Algunas de nuestras herramientas se identificaban antes como CrawlForge-Bot. Ya nada envía ese token: todo envía CrawlForge.

Aun así se sigue respetando como origen de un disallow. Unificar el token habría desbloqueado en silencio a todos los propietarios de sitios que ya habían escrito el nombre antiguo en su robots.txt, y esa fue una decisión que tomaron sobre nosotros y que un cambio de nombre no tiene por qué descartar. Se consultan los dos tokens y un disallow de cualquiera de ellos prevalece.

Si su robots.txt ya nombra el token retirado, no necesita cambiar nada.

robots.txtBash
# Already in your file? Leave it — it still blocks us.
User-agent: CrawlForge-Bot
Disallow: /

Verificación criptográfica (Web Bot Auth)

Un User-Agent es una afirmación, y cualquiera puede enviar el nuestro. Por eso CrawlForge firma sus solicitudes salientes con Web Bot Auth: firmas de mensajes HTTP (RFC 9421) con una clave Ed25519 cuya mitad pública publicamos. Usted puede verificar una solicitud sin contactarnos y sin listas de permitidos.

Las dos superficies firman. Cada solicitud firmada lleva Signature-Input (los componentes cubiertos y los parámetros de la firma), Signature (la firma Ed25519, en base64) y Signature-Agent (la URL del directorio que publica nuestra clave).

La firma cubre la autoridad a la que se envió la solicitud, más el valor de Signature-Agent cuando se anuncia. Demuestra que la solicitud proviene de quien posee nuestra clave privada. No cubre la ruta, el cuerpo ni el User-Agent, así que tómela como prueba de *quién*, no de *qué se pidió*.

Nuestro directorio de firmas

Un conjunto de claves JSON, servido como application/http-message-signatures-directory+json y almacenable en caché durante un día. Fíjese en el plural de signatures.

the signature directoryBash
curl -sS https://www.crawlforge.dev/.well-known/http-message-signatures-directory

Los encabezados que enviamos

La lista de parámetros la serializa la misma función que firma nuestras solicitudes. Los valores entre paréntesis angulares cambian en cada solicitud. Resuelva el `keyid` contra el directorio en lugar de fijarlo: es una huella de la clave y cambia cuando la rotamos.

request headersBash
Signature-Input: sig1=("@authority" "signature-agent");created=1787788800;keyid="<keyid — look it up in the directory>";alg="ed25519";expires=1787789100;nonce="<64 random bytes, base64>";tag="web-bot-auth"
Signature: sig1=:<base64 Ed25519 signature>:
Signature-Agent: "https://www.crawlforge.dev"

Cómo verificar una solicitud

Reconstruya la base de la firma a partir de la solicitud que recibió y compruébela contra la clave publicada. El módulo crypto de Node basta; cualquier verificador de RFC 9421 hace lo mismo.

verify.mjsJavascript
import { createPublicKey, verify } from 'node:crypto';

// `request` is the request you received; `signatureInput` and `signature`
// are its Signature-Input and Signature header values.

// 1. Fetch the directory and index the published keys by their thumbprint.
const { keys } = await fetch(
  'https://www.crawlforge.dev/.well-known/http-message-signatures-directory'
).then((r) => r.json());

// 2. Read the parameters off Signature-Input, dropping the "sig1=" label.
const params = signatureInput.replace(/^[^=]+=/, '');
const keyid = /keyid="([^"]+)"/.exec(params)?.[1];
const published = keys.find((k) => k.kid === keyid);
if (!published) throw new Error('keyid is not in the directory — not us');

// 3. Rebuild the signature base from the request you received. The covered
//    components are listed in the parentheses at the start of params.
const covered = /^\(([^)]*)\)/.exec(params)[1];
const lines = [`"@authority": ${request.headers.host}`];
if (covered.includes('"signature-agent"')) {
  lines.push(`"signature-agent": ${request.headers['signature-agent']}`);
}
lines.push(`"@signature-params": ${params}`);

// 4. Verify the Ed25519 signature (base64, between the colons).
const key = createPublicKey({
  key: { kty: 'OKP', crv: 'Ed25519', x: published.x },
  format: 'jwk',
});
const bytes = Buffer.from(
  signature.replace(/^[^=]+=:/, '').replace(/:$/, ''),
  'base64'
);
const ok = verify(null, Buffer.from(lines.join('\n'), 'utf8'), key, bytes);

// 5. Finally, reject a stale signature: params carries created= and expires=,
//    and we sign with a five-minute window.
Una solicitud sin firma no está verificada Si algo dice llevar nuestro User-Agent pero no trae firma —o trae una que no verifica—, para usted no es CrawlForge y puede tratarlo en consecuencia. Escríbanos a support@crawlforge.dev y le confirmaremos si el tráfico es nuestro.

Cómo bloquear a CrawlForge

Una sola regla de robots.txt lo cubre todo. El nombre del grupo es el token de producto, que ambas superficies utilizan para la comparación, así que esto bloquea todas las herramientas de CrawlForge en las dos.

Añada esto a su robots.txt. Surte efecto en la siguiente descarga: leemos el archivo una vez por origen al comienzo de cada rastreo.

robots.txtBash
User-agent: CrawlForge
Disallow: /

Lo que no le vamos a ocultar

robots.txt se respeta de forma predeterminada en todas las herramientas de descarga. Un cliente también puede pasar respect_robots: false en una solicitud concreta: esa excepción existe, está documentada y es deliberada, porque algunos clientes tienen su propio acuerdo con el sitio que descargan y empujar esa decisión a la clandestinidad la volvería invisible, no rara.

No es silenciosa. La excepción se aplica a una sola solicitud, nunca a una cuenta ni al producto. La respuesta incluye una advertencia de que se usó, y la solicitud se registra en el servidor como una entrada robots_override con la URL, la herramienta y el identificador interno de la clave de API que la pidió —nunca la clave en sí—, de modo que una descarga en disputa pueda rastrearse hasta el cliente que la eligió.

Por debajo de todo esto hay una exclusión a nivel de plataforma a la que no llega ningún parámetro. Si una regla de robots.txt no le basta, use la vía de exclusión.

Direcciones IP de salida

Hoy no publicamos una lista de direcciones IP de salida. Nuestra API alojada y nuestro backend de navegador funcionan sobre infraestructura de terceros y, hasta que podamos comprometernos con un rango que siga siendo exacto el mes que viene, publicar uno sería peor que no publicar nada: una lista de permitidos construida sobre un rango obsoleto se cierra ante el tráfico real y se abre ante todo lo demás. Cuando tengamos una lista que podamos sostener, aparecerá en esta sección.

En cualquier caso, la verificación de la firma es la comprobación más sólida. Un rango de direcciones solo demuestra de dónde salió un paquete, y quien pueda alquilar una dirección dentro de ese rango hereda la afirmación; el remedio habitual —una búsqueda de DNS inverso encima— demuestra el control de un nombre de host, no el de la solicitud. Una firma Ed25519 demuestra la posesión de la clave privada cuya mitad pública está en nuestro directorio, sobrevive a que cambiemos de proveedor y no puede reproducirse contra otra autoridad.

Si una firma no le basta para un acuerdo comercial por su parte, escriba a support@crawlforge.dev e indique qué necesita.

Exclusiones y retiradas de contenido

Para quedar excluido a nivel de plataforma —de forma permanente, en todas las herramientas, todas las claves de API y todos los planes, sin que ningún parámetro de cliente pueda anularlo— escriba a support@crawlforge.dev indicando el dominio y las páginas afectadas. La misma dirección atiende las solicitudes de retirada de contenido y cualquier duda sobre tráfico que crea que procede de nosotros.

Documentos relacionados
Qué hace CrawlForge cuando descarga páginas, y los términos para los clientes.
Reglas de funcionamiento del rastreador
Las ocho reglas fundamentales detrás de esta página, el motivo de cada una y cómo se aplican.
Política de uso aceptable
Qué pueden y qué no pueden hacer los clientes con la API: actividades prohibidas, aplicación y denuncias.
Política de privacidad
Qué recopilamos y durante cuánto tiempo lo conservamos.

Pie de página

CrawlForge MCP

Web scraping empresarial para agentes de IA. 29 herramientas MCP especializadas diseñadas para desarrolladores modernos que crean sistemas inteligentes.

Producto

  • Funciones
  • Playground
  • Precios
  • Casos de uso
  • Integraciones
  • Alternativas
  • Registro de cambios

Recursos

  • Primeros pasos
  • Referencia de la API
  • Plantillas
  • Guías
  • Blog
  • Glosario
  • Preguntas frecuentes
  • Mapa del sitio

Desarrolladores

  • Protocolo MCP
  • Claude Desktop
  • Cursor IDE
  • LangChain
  • LlamaIndex

Empresa

  • Acerca de
  • Contacto
  • Privacidad
  • Términos
  • Uso aceptable
  • Cookies

Mantente al día

Recibe las últimas novedades sobre nuevas herramientas y funciones.

Creado con Next.js y el protocolo MCP

© 2025-2026 CrawlForge. Todos los derechos reservados.