Saltar al contenido
Seguridad de red

Lista de IP de rastreadores verificados: crea una lista de bots buenos permitidos a partir de 19 fuentes oficiales

Una lista de IP de rastreadores verificados a partir de 19 archivos oficiales de 10 operadores: fechas de los archivos, número de prefijos, código para la lista de permitidos y un bot verificado que aun así obtuvo review.

PorEquipo de GeoIPHubPublicadoTiempo de lectura21 min de lectura
Tres nodos de servidor de cristal envían haces a través de una puerta de cristal azul hacia barras coincidentes en un panel de cristal, mientras que un cuarto nodo brilla en rojo y se detiene ante una pequeña barrera, lo que representa direcciones de rastreadores comprobadas contra el archivo de rangos publicado por su operador

Una regla de firewall que desafía el tráfico de redes de hosting también atrapa a los rastreadores que quieres. Todas las direcciones de rastreadores verificados que consultamos el 29 de octubre de 2026 están en redes de hosting: ClaudeBot en Amazon, DuckDuckGo en Microsoft, AhrefsBot en OVH, Googlebot en la propia red de Google. Si en su lugar relajas la regla por User-Agent, entra cualquier scraper que escriba "Googlebot" en su cabecera.

Los operadores publican la prueba gratis, pero repartida en 19 archivos de 10 sitios web distintos, con fechas distintas y sin un calendario de actualización declarado. Dos de los archivos son la misma lista. El tráfico es real. Al anunciar el Bad Bot Report 2026 de Imperva, Thales escribió: "Los bots dominan ya internet: suponen más del 53% de todo el tráfico web, y el 40% se clasifica como malicioso".

A continuación tienes cada archivo con la fecha que figuraba en él el 29 de octubre de 2026, lo que devuelve la API de consulta de IP de GeoIPHub para direcciones reales sacadas de ellos, un script que construye la lista de permitidos, una comprobación de política que no falla con los archivos compartidos y los bots que ningún archivo cubre.

Una pestaña de cristal azul unida por un fino haz de luz a la ficha delantera de un fichero de cristal esmerilado, que representa el nombre declarado de un bot comprobado contra el propio archivo de su operador
El nombre es una afirmación. El archivo del operador es la prueba.

Bots buenos frente a bots malos: la diferencia es la prueba, no el nombre

Un bot bueno es uno al que has decidido dejar entrar y cuya IP puedes demostrar que pertenece a su operador. Un bot malo falla cualquiera de las dos pruebas, y el tipo más común es un scraper que se disfraza con el User-Agent de un bot bueno.

Entre los bots buenos están los rastreadores de buscadores, los rastreadores de búsqueda con IA y los fetchers activados por usuarios, las herramientas SEO y los archivadores web. Entre los bots malos están los scrapers, los bots de credential stuffing, los bots de clics y los bots de spam. Muchos glosarios dicen que los bots buenos "se identifican". Los bots malos también lo hacen: copian la identidad, que es precisamente por qué los scrapers toman prestados los nombres de los rastreadores.

Así que la pregunta útil no es "¿es este un bot bueno?", sino "¿procede esta solicitud del operador que nombra?". Esa segunda pregunta tiene una respuesta mecánica, y es la base de la detección de bots por IP: el operador controla sus rangos de IP y nadie más lo hace. Si admitir o no a un bot demostrado es entonces tu política, y puede variar de un sitio a otro.

La lista de IP de rastreadores verificados: 19 archivos oficiales de 10 operadores

Sirve como lista de IP de bots de buscadores y como algo más: los 19 archivos de rangos que carga GeoIPHub proceden de 10 operadores, desde buscadores y empresas de IA hasta un archivo web y una herramienta SEO. Aquí tienes cada uno con su número de prefijos y la fecha escrita dentro del archivo, descargados el 29 de octubre de 2026 entre las 04:41 y las 04:42 UTC. Los 19 respondieron con HTTP 200 y comparten una misma estructura: un array prefixes con entradas ipv4Prefix o ipv6Prefix.

OperadorBot (archivo)URL del archivoPrefijos (IPv4 / IPv6)Fecha en el archivocrawler.name en la API
GoogleRastreadores comunes, incl. Googlebotcommon-crawlers.json170 / 14728 oct. 2026Googlebot
GoogleRastreadores de casos especiales, incl. AdsBotspecial-crawlers.json136 / 13628 oct. 2026GoogleSpecialCrawler
GoogleFetchers activados por usuariosuser-triggered-fetchers.json534 / 53428 oct. 2026GoogleUserTriggeredFetcher
GoogleFetchers activados por usuarios (google.com)user-triggered-fetchers-google.json252 / 25228 oct. 2026GoogleUserTriggeredFetcherGoogle
GoogleAgentes activados por usuarios (Google-Agent)user-triggered-agents.json12 / 828 oct. 2026GoogleUserTriggeredAgent
MicrosoftBingbotbingbot.json28 / 03 ene. 2024Bingbot
AppleApplebotapplebot.json24 / 015 sept. 2026Applebot
DuckDuckGoDuckDuckBotduckduckbot.json486 / 01 sept. 2026DuckAssistBot (ver más abajo)
DuckDuckGoDuckAssistBotduckassistbot.json486 / 01 sept. 2026DuckAssistBot
OpenAIGPTBotgptbot.json18 / 022 sept. 2026GPTBot
OpenAIChatGPT-Userchatgpt-user.json235 / 027 oct. 2026ChatGPTUser
OpenAIOAI-SearchBotsearchbot.json39 / 02 ene. 2026OAISearchBot
AnthropicClaudeBot, Claude-User, Claude-SearchBotbots.json14 / 020 oct. 2026ClaudeBot
PerplexityPerplexity-Userperplexity-user.json10 / 028 oct. 2026PerplexityUser
PerplexityPerplexityBotperplexitybot.json13 / 028 oct. 2026PerplexityBot
MistralMistralAI-Usermistralai-user-ips.json4 / 019 feb. 2025MistralAIUser
MistralMistralAI-Indexmistralai-index-ips.json2 / 019 abr. 2026MistralAIIndex
Common CrawlCCBotccbot.json4 / 111 ago. 2026CCBot
AhrefsAhrefsBotcrawler-ip-ranges81 / 0sin fecha en el archivoAhrefsBot

El escáner de GeoIPHub vuelve a descargar cada archivo a diario. El 27 de octubre de 2026 consultamos una dirección de cada archivo y las 19 salieron verificadas; las dos direcciones de Perplexity procedían de los archivos que sustituyó el 28 de octubre.

Son 3.626 prefijos en total, y los cinco archivos de Google contienen 2.181 de ellos. Además, son solo 18 listas distintas: los dos archivos de DuckDuckGo eran idénticos byte a byte cuando los descargamos (mismo hash MD5). Los dos archivos de Perplexity cambiaron entre el 27 y el 28 de octubre, de 4 y 8 prefijos a 10 y 13, lo cual es un buen aviso contra copiar a mano la tabla de cualquiera, incluida esta, en un archivo de configuración.

Cuatro notas. La antigua ruta de Google, developers.google.com/search/apis/ipranges/googlebot.json, responde ahora con una redirección 301 a common-crawlers.json, así que las guías antiguas que la enlazan siguen funcionando si tu código sigue las redirecciones. El archivo de Microsoft tiene fecha de enero de 2024. La documentación de Perplexity sigue enlazando URL de www.perplexity.com, que redirigen a los archivos de www.perplexity.ai de arriba. Y www.gstatic.com/ipranges/goog.json cubre todas las direcciones de Google, así que no es una lista de rastreadores. Para ver cómo se reparten los cinco archivos de Google entre sus grupos de rastreadores, consulta nuestra guía de Googlebot.

Qué devuelve una coincidencia: cuatro consultas reales

Una coincidencia en la API de GeoIPHub devuelve threat.crawler.verified: true, el operador, una etiqueta de archivo y verification_method: "ip_range_list". Una dirección que no está en ningún archivo devuelve verified: false, que significa "no verificada", nada más. Esta es la dirección de ClaudeBot, recortada de la respuesta en vivo (29 de octubre de 2026, 04:42:21 UTC):

GeoIPHub API
{ "asn": { "asn": 16509, "org": "AMAZON-02 - Amazon.com, Inc." }, "threat": { "is_crawler": true, "crawler": { "verified": true, "name": "ClaudeBot", "operator": "Anthropic", "category": "ai", "verification_method": "ip_range_list" } }, "scoring": { "fraud_score": 0, "recommended_action": "allow", "detection_methods": ["datacenter_ip", "no_ptr_datacenter", "verified_crawler"] } }

dig -x 216.73.216.10 no devolvió ningún registro PTR el 29 de octubre de 2026, así que el DNS inverso no puede responder por esta dirección. Solo puede hacerlo el archivo de Anthropic. Otras tres direcciones, consultadas entre las 04:42:28 y las 04:42:44 UTC:

IPProcedenciaverifiedoperatornamecategoryPuntuación, acción
216.73.216.10Archivo de AnthropictrueAnthropicClaudeBotai0, allow
107.178.192.1Archivo de fetchers activados por usuarios de GoogletrueGoogleGoogleUserTriggeredFetcherfetcher0, allow
104.43.54.127Ambos archivos de DuckDuckGotrueDuckDuckGoDuckAssistBotai0, allow
31.13.64.1Red de Meta, AS32934falseMetaFacebook-Botsocial_preview0, allow

Ahora sigue el rastro de una solicitud. Supón que una solicitud dice ser DuckDuckBot desde 104.43.54.127, una dirección que figura como /32 en ambos archivos de DuckDuckGo. La consulta dice verified: true y operator: "DuckDuckGo", pero name: "DuckAssistBot" y category: "ai". Una política escrita como "permitir bots de búsqueda, limitar la tasa de los bots de IA" y basada en el nombre o la categoría limitaría al rastreador de búsqueda real de DuckDuckGo. Basada en el bot declarado y su operador, pasa. Esperábamos un nombre DuckDuckBot y obtuvimos DuckAssistBot: el campo del nombre nos dijo qué archivo se cargó el último, no qué bot llamó a la puerta.

Meta es la otra trampa. Reconocemos la red de Meta (AS32934) por ASN, así que is_crawler es true pero verified es false y verification_method es "none". Trátala como no verificada. Nuestra documentación enumera los campos de rastreador y lo que significa cada uno.

Un archivo puede cubrir varios bots, así que basa tu política en el operador

Asocia el User-Agent declarado a un operador y luego exige verified: true y ese mismo operador. Nunca uses crawler.name ni category como interruptor, porque un archivo puede representar a varios bots:

  • DuckDuckGo: dos archivos, una lista. Nuestro escáner carga duckassistbot.json en segundo lugar, así que gana la última escritura y todas las direcciones de DuckDuckGo llevan la etiqueta DuckAssistBot.
  • Anthropic: un archivo para ClaudeBot, Claude-User y Claude-SearchBot. La página de ayuda sobre rastreadores de Anthropic dice: "Si un rastreador tiene una dirección IP de origen que figura en esta lista, indica que el rastreador procede de Anthropic". Así que una coincidencia significa verificado como Anthropic; el User-Agent te dice qué bot es.
  • Google: el archivo de rastreadores comunes cubre varios rastreadores de Google bajo una sola etiqueta, Googlebot.

is_crawler por sí solo tampoco basta para una lista de permitidos, ya que es true para la coincidencia no verificada de Meta. Y la API nunca ve las cabeceras de tus solicitudes. Recibe una IP, así que la parte de la comprobación que corresponde a la afirmación siempre se ejecuta en tu código.

Cómo construir una lista de rastreadores permitidos en cuatro pasos

Constrúyela en cuatro pasos: asocia cada User-Agent que permites a su operador, carga los archivos de ese operador, comprueba la IP contra ellos y envía cada afirmación que falle al limitador de tasa.

  1. El mapa de afirmaciones. Enumera los tokens de User-Agent que permites (los WAF más antiguos lo llaman whitelist) y el operador cuyo archivo debe contener la IP.
  2. Los archivos. Construye tu propia lista combinada con el script de abajo, o haz una consulta por cada IP nueva y guarda el veredicto en caché unas horas, no semanas, porque los rangos cambian.
  3. La coincidencia. Comprueba la IP solo contra los prefijos del operador declarado.
  4. La vía de no verificados. No la respondas con un 403. Limita la tasa de lo que no puedas verificar, para que un rastreador real en un prefijo nuevo vaya más despacio en lugar de desaparecer.

¿Por qué por operador y no por archivo? Porque algunos operadores hacen imposible fijar la comprobación a un archivo. Los tres bots de Anthropic comparten un archivo y los dos bots de DuckDuckGo comparten una lista, así que una comprobación que exija "el propio archivo de Claude-SearchBot" no tiene nada con lo que coincidir. La comprobación por operador pierde un poco de precisión con Google, OpenAI, Perplexity y Mistral, donde los archivos están separados, y a cambio nunca falla con uno compartido.

Dos reglas. Compara los prefijos publicados exactos, nunca el ASN: en nuestras consultas, el AS8075 de Microsoft transporta Bingbot, GPTBot, ChatGPT-User y DuckDuckGo, así que permitirlo deja entrar a todos los clientes de Azure. Y nunca permitas solo por User-Agent. Para los bots sin archivo, usa DNS inverso confirmado en sentido directo cuando el operador lo documente.

El constructor descarga los 19 archivos, agrupa los prefijos por operador y escribe allowlist.json con una hora de descarga por archivo. Si un archivo no se descarga, no se puede analizar, llega vacío o se reduce a menos de la mitad de su última copia buena, conserva los prefijos anteriores de ese archivo. El escáner de GeoIPHub hace lo mismo con un número mínimo fijo de prefijos por archivo.

GeoIPHub API
// build-allowlist.mjs: Node 18+, no dependencies. Run once a day. import fs from "node:fs"; const FEEDS = { Google: [ "https://developers.google.com/static/crawling/ipranges/common-crawlers.json", "https://developers.google.com/static/crawling/ipranges/special-crawlers.json", "https://developers.google.com/static/crawling/ipranges/user-triggered-fetchers.json", "https://developers.google.com/static/crawling/ipranges/user-triggered-fetchers-google.json", "https://developers.google.com/static/crawling/ipranges/user-triggered-agents.json", ], Microsoft: ["https://www.bing.com/toolbox/bingbot.json"], Apple: ["https://search.developer.apple.com/applebot.json"], DuckDuckGo: [ "https://duckduckgo.com/duckduckbot.json", "https://duckduckgo.com/duckassistbot.json", ], OpenAI: [ "https://openai.com/gptbot.json", "https://openai.com/chatgpt-user.json", "https://openai.com/searchbot.json", ], Anthropic: ["https://claude.com/crawling/bots.json"], Perplexity: [ "https://www.perplexity.ai/perplexity-user.json", "https://www.perplexity.ai/perplexitybot.json", ], Mistral: [ "https://mistral.ai/mistralai-user-ips.json", "https://mistral.ai/mistralai-index-ips.json", ], CommonCrawl: ["https://index.commoncrawl.org/ccbot.json"], Ahrefs: ["https://api.ahrefs.com/v3/public/crawler-ip-ranges"], }; const OUT = "allowlist.json"; const previous = fs.existsSync(OUT) ? JSON.parse(fs.readFileSync(OUT, "utf8")) : { files: {} }; const files = {}; for (const [operator, urls] of Object.entries(FEEDS)) { for (const url of urls) { try { const res = await fetch(url, { signal: AbortSignal.timeout(15000) }); if (!res.ok) throw new Error(`HTTP ${res.status}`); const body = await res.json(); const prefixes = (body.prefixes || []) .map((p) => p.ipv4Prefix || p.ipv6Prefix) .filter(Boolean); if (prefixes.length === 0) throw new Error("no prefixes in file"); const last = previous.files[url]; // A real shrink this large is rare: check it by hand before you trust it. if (last && prefixes.length < last.prefixes.length / 2) { throw new Error(`${prefixes.length} prefixes, last good copy had ${last.prefixes.length}`); } files[url] = { operator, prefixes, file_date: body.creationTime || null, fetched_at: new Date().toISOString(), }; } catch (err) { // Fail safe: a broken fetch keeps yesterday's prefixes for that file. if (previous.files[url]) files[url] = previous.files[url]; console.error(`${url}: ${err.message}; ${files[url] ? "kept previous prefixes" : "no previous copy"}`); } } } fs.writeFileSync(`${OUT}.tmp`, JSON.stringify({ built_at: new Date().toISOString(), files }, null, 1)); fs.renameSync(`${OUT}.tmp`, OUT); console.log(`${Object.keys(files).length} files written to ${OUT}`);

Prográmalo con una sola línea de cron, como 20 5 * * * cd /srv/bots && node build-allowlist.mjs. La comprobación de política lee ese archivo o una respuesta de consulta, y ambas vías se basan en el operador del bot declarado:

GeoIPHub API
// check-claim.mjs: decide whether a bot claim is proven. import net from "node:net"; // Claimed User-Agent token, and the operator whose file must contain the IP. // Not exhaustive; add the bots you allow. const CLAIMS = [ ["googlebot", "Google"], ["adsbot-google", "Google"], ["google-agent", "Google"], ["bingbot", "Microsoft"], ["applebot", "Apple"], ["duckduckbot", "DuckDuckGo"], ["duckassistbot", "DuckDuckGo"], ["gptbot", "OpenAI"], ["oai-searchbot", "OpenAI"], ["chatgpt-user", "OpenAI"], ["claudebot", "Anthropic"], ["claude-searchbot", "Anthropic"], ["claude-user", "Anthropic"], ["perplexitybot", "Perplexity"], ["perplexity-user", "Perplexity"], ["mistralai-user", "Mistral"], ["mistralai-index", "Mistral"], ["ccbot", "CommonCrawl"], ["ahrefsbot", "Ahrefs"], ]; function findClaim(userAgent) { const ua = (userAgent || "").toLowerCase(); return CLAIMS.find(([token]) => ua.includes(token)) || null; } // Path 1: your own allowlist.json from build-allowlist.mjs. export function loadLists(allowlist) { const lists = {}; for (const file of Object.values(allowlist.files)) { lists[file.operator] ||= new net.BlockList(); for (const cidr of file.prefixes) { const [addr, len] = cidr.split("/"); lists[file.operator].addSubnet(addr, Number(len), net.isIPv6(addr) ? "ipv6" : "ipv4"); } } return lists; } export function checkWithLists(userAgent, ip, lists) { const claim = findClaim(userAgent); if (!claim) return { claimed: null, verified: false }; const family = net.isIPv6(ip) ? "ipv6" : "ipv4"; return { claimed: claim[0], verified: lists[claim[1]]?.check(ip, family) === true }; } // Path 2: one lookup per new IP, using the API's crawler fields. export async function lookup(ip, apiKey) { try { const res = await fetch(`https://api.geoiphub.com/v1/lookup/${ip}`, { headers: { "x-api-key": apiKey }, signal: AbortSignal.timeout(2000), }); return res.ok ? await res.json() : null; } catch { return null; // a failed lookup proves nothing: treat it as unverified } } export function checkClaim(userAgent, result) { const claim = findClaim(userAgent); if (!claim) return { claimed: null, verified: false }; const c = result?.threat?.crawler; return { claimed: claim[0], verified: c?.verified === true && c?.operator === claim[1] }; }

Ejecutamos ambas vías contra los archivos y las consultas del 29 de octubre de 2026, además de los casos de fallo. El caso de GPTBot usa 45.33.32.156, el host de pruebas público de Nmap, que nunca envió una solicitud así. La comprobación es por operador, no por bot: una afirmación de Googlebot desde una dirección del archivo de fetchers de Google también pasa como Google.

GeoIPHub API
PASS ClaudeBot UA, 216.73.216.10 verified (name ClaudeBot) PASS Claude-SearchBot UA, 216.73.216.10 verified as Anthropic (name ClaudeBot) PASS DuckDuckBot UA, 104.43.54.127 verified (name DuckAssistBot) PASS AhrefsBot UA, 5.39.1.230 verified PASS Googlebot UA, 66.249.66.1 verified PASS GPTBot UA, 45.33.32.156 not verified (no file match) PASS ChatGPT-User UA, 66.249.66.1 not verified (operator is Google) PASS facebookexternalhit UA, 31.13.64.1 no claim in the map PASS Browser UA, 216.73.216.10 no claim PASS Lookup error, ClaudeBot UA not verified 10/10 passed, lookup path and allowlist path agree builder, bots.json forced to fail: kept previous prefixes (14) builder, bingbot.json returns HTML: kept previous prefixes (28) builder, applebot.json returns []: kept previous prefixes (24) builder, chatgpt-user.json shrinks to 1: kept previous prefixes (235)

Ese código es la parte de permitir. Para aplicar una política de bloqueo por bot, consulta la configuración de nginx y Express de nuestra guía de rastreadores de IA.

¿Puede un bot verificado ser aun así un bot malo? AhrefsBot dice que sí

Sí. La verificación demuestra quién opera la dirección, no que la dirección esté limpia ni que sea bienvenida. La dirección 5.39.1.230 de AhrefsBot muestra ambas cosas a la vez (29 de octubre de 2026, 04:42:51 UTC):

CampoValor
threat.crawler.verifiedtrue
threat.crawler.operatorAhrefs
threat.crawler.categoryseo
threat.is_spammertrue
threat.dnsbl_sourceszen.spamhaus.org
scoring.fraud_score35
scoring.recommended_actionreview
scoring.detection_methodsdatacenter_blocklisted, no_ptr_datacenter, verified_crawler, known_spammer

La señal de rastreador verificado resta 28,5 puntos (menos 30 con una confianza de 0,95), pero no anula una aparición en una lista de bloqueo; la guía de motivos de la puntuación de riesgo muestra el cálculo. Guardamos dos valores anteriores para esta dirección: 59, step_up el 19 de octubre, cuando también se activó una entrada en una lista de abuso, y 35, review desde el 22 de octubre. Cuando investigamos esta dirección el 19 de octubre, el registro de RIPE mostraba el /27 registrado a nombre de Ahrefs dentro de un bloque de OVH.

Tu lista de permitidos decide si AhrefsBot entra. La puntuación te dice que su rango tiene historial. Muchos sitios no tienen ningún uso para los rastreadores SEO y muchos otros sí, así que esa decisión es tuya.

Bots buenos que ignoran robots.txt por diseño

"Respeta robots.txt" no es una prueba de que un bot sea bueno, porque los propios operadores dicen que sus fetchers activados por usuarios pueden no seguirlo:

  • Google: "Como la descarga la solicitó un usuario, estos fetchers suelen ignorar las reglas de robots.txt". (Fetchers activados por usuarios de Google)
  • OpenAI, sobre ChatGPT-User: "Como estas acciones las inicia un usuario, es posible que las reglas de robots.txt no se apliquen". (Bots de OpenAI)
  • Perplexity, sobre Perplexity-User: "Como un usuario solicitó la descarga, este fetcher suele ignorar las reglas de robots.txt". (Rastreadores de Perplexity)

El razonamiento es el mismo en los tres casos: la descarga actúa en nombre de una persona, así que bloquearla bloquea la solicitud de esa persona. Un fetcher verificado que se salta tu robots.txt se está comportando según lo documentado, no portándose mal.

robots.txt pide; una lista de permitidos impone. Si quieres dejar fuera a un fetcher activado por usuarios, necesitas una regla en el borde, no una línea en un archivo de texto. Para saber qué hace cada bot de OpenAI y qué cuesta bloquear cada uno, consulta nuestra comparación de OpenAI.

¿Qué tan actualizada está la lista? Fechas de los archivos, una descarga diaria y un retraso de dos días

La lista está tan actualizada como la última edición del operador más tu descarga. En el caso de la API de GeoIPHub, eso supone una descarga diaria y hasta unos dos días antes de que un cambio entre en vigor.

Este es el funcionamiento, según el código y la configuración del escáner de GeoIPHub, comprobados el 29 de octubre de 2026. El paso de rastreadores descarga cada archivo como máximo una vez al día. Si una descarga falla, o devuelve menos prefijos que el mínimo de ese archivo, el escáner conserva los últimos rangos buenos. Un prefijo que el operador elimina deja de verificarse tras la siguiente descarga buena y la reconstrucción diaria posterior. A continuación, la base de datos de consultas se reconstruye a diario a las 00:00 UTC y está activa hacia las 04:00 UTC.

La regla práctica: guarda en caché un veredicto verificado durante horas, vuelve a descargar los archivos a diario y cuenta con que un prefijo recién añadido no se verifique durante hasta unos dos días. Es otro motivo por el que la vía de no verificados va a un limitador de tasa y no a un bloqueo.

Perplexity es el único operador de nuestras comprobaciones cuya documentación dice algo sobre la frecuencia: "Estas direcciones se actualizan con regularidad y deben ser la fuente de verdad para tus configuraciones de WAF". La página de verificación de Google no indica ninguna frecuencia. Las fechas de los archivos que descargamos el 29 de octubre de 2026 van de enero de 2024 (Microsoft) al 28 de octubre de 2026 (Google y Perplexity). Una fecha estable no es un error; algunas flotas no se mueven.

Una carencia por nuestra parte: la API no muestra qué archivo coincidió ni cuándo lo descargamos. Si necesitas ese registro de auditoría, ejecuta el constructor y conserva sus valores fetched_at.

Bots sin lista publicada, y qué hacer con ellos

Algunos bots que quizá quieras no publican ningún archivo que cargue GeoIPHub, así que esta lista no puede verificarlos:

  • OAI-AdsBot: OpenAI lo documenta y publica adsbot.json, pero nuestro escáner todavía no lo carga. Añádelo a tu propio constructor si publicas anuncios en ChatGPT.
  • Amazonbot: Amazon muestra sus rangos dentro de una página web, sin ningún archivo que descargar. No lo cargamos.
  • Meta: la página de rastreadores de Meta dice "Añade a tu lista de permitidos las cadenas de user agent o las direcciones IP (más seguro) que usa el rastreador", pero no ofrece ningún archivo de rangos. Solo reconocemos su red por ASN, sin verificar.
  • Yandex y Baidu: solo DNS inverso. La guía de Yandex describe la comprobación: el nombre de DNS inverso debe terminar en yandex.ru, yandex.net o yandex.com, y una búsqueda directa de ese nombre debe devolver la misma IP.
  • Bytespider: no encontramos ningún archivo de rangos de ByteDance.
  • Monitores de disponibilidad y webhooks de pago: muchos publican sus propias listas. Stripe publica las IP de sus webhooks en JSON, documentadas en su página de direcciones IP. Usa la lista del proveedor; no son rastreadores y no están en nuestras fuentes.
  • Bots que firman sus solicitudes: Web Bot Auth permite a un bot identificarse con una firma criptográfica en lugar de con una IP, como explicamos en nuestra guía de verificación de rastreadores. El directorio de bots verificados de Cloudflare acepta un bot validado mediante Web Bot Auth o mediante una lista de IP publicada con un User-Agent estable.

Qué hacer: usa el método de DNS inverso del operador cuando exista, la propia lista del proveedor para los servicios y el limitador de tasa para todo lo demás.

Ejecuta el constructor esta noche, o pega una IP de tus registros en la consulta de IP y comprueba si su fila Crawler dice "Verified crawler" o "Unverified crawler". El nombre en la cabecera es una afirmación; el archivo del operador es la prueba.

Preguntas frecuentes

¿Qué es una lista de IP de rastreadores verificados?

Una lista construida a partir de los archivos de rangos de IP que los operadores de bots publican para sus propios rastreadores. GeoIPHub carga 19 de esos archivos de 10 operadores, entre ellos Google, Microsoft, Apple, OpenAI y Anthropic; OpenAI publica un vigésimo, adsbot.json, que todavía no cargamos. Una solicitud procede de un rastreador verificado cuando su User-Agent nombra un bot y su IP está dentro del archivo de ese operador.

¿Ve una consulta de IP el User-Agent?

No. Una consulta de GeoIPHub solo recibe la IP. Puede decirte que la dirección está en el archivo de Anthropic o de Google, y es tu propio código el que compara ese operador con el bot que dice ser el User-Agent.

¿Puede un bot verificado ser aun así un bot malo?

Sí. La dirección 5.39.1.230 de AhrefsBot coincidía con los rangos publicados por Ahrefs y además estaba listada en Spamhaus ZEN, y obtuvo 35, review, en la API de GeoIPHub el 29 de octubre de 2026. La verificación te dice quién opera la dirección, no si debes dejarla entrar.

¿Con qué frecuencia cambian los rangos de IP de los rastreadores?

Depende del operador, y la mayoría no lo dice. El 29 de octubre de 2026, las fechas de los archivos iban de enero de 2024 (Microsoft) al 28 de octubre de 2026 (Google y Perplexity). GeoIPHub vuelve a descargar cada archivo a diario, y un cambio puede tardar hasta unos dos días en llegar a su API.

¿Debo permitir rastreadores por ASN?

No. Muchos rastreadores funcionan en nubes compartidas: la red de Microsoft transporta Bingbot, GPTBot y los bots de DuckDuckGo, así que permitirla deja entrar a todos los clientes de esa nube. Comprueba los prefijos exactos del archivo de cada operador.

¿Qué bots no se pueden verificar con una lista de IP?

Los bots cuyos operadores no publican ningún archivo, como Yandex y Baidu (que usan DNS inverso), Meta (sin archivo de rangos; GeoIPHub reconoce su red por ASN, sin verificar) y Bytespider. Amazon solo muestra los rangos de Amazonbot dentro de una página web. Limita la tasa de lo que no puedas verificar.

Escrito por

Equipo de GeoIPHub

El equipo detrás de la API de GeoIPHub

Escrito por el equipo de GeoIPHub, las personas que crean la API de inteligencia IP de GeoIPHub y su escáner. Los borradores se preparan con ayuda de IA y el equipo los edita; los ejemplos de la API son consultas reales contra la API en producción, salvo que se indique que son ilustrativos.

Comparte este artículo
Más artículos

Artículos relacionados