Aprenent IA
És GPTBot o un impostor? Comprova-ho als teus registres
Qualsevol pot fer peticions a la teva web dient que és GPTBot, ClaudeBot o el robot de Google: el nom l'escriu qui fa la petició. Al registre d'accés de twinforce.es, 5.156 de les 36.551 peticions que en un mes es van presentar com un dels nou robots d'IA o de cerca van arribar des de fora de les adreces IP que publica cada empresa, i sis de cada deu buscaven fitxers de credencials. Així es comprova amb les llistes oficials i un script de 32 línies, i així se'ls tanca la porta.
En resum
- Del 30 de setembre al 30 d'octubre de 2026, 36.551 peticions al servidor de twinforce.es es van presentar com un dels nou robots d'OpenAI, Anthropic, Google o Perplexity; 5.156, el 14,1 %, van arribar des d'IP que aquestes empreses no publiquen com a seves.
- 38 adreces es van fer passar pels nou robots, canviant de nom d'una petició a l'altra, i sumen 4.672 de les peticions falses, el 90,6 %.
- 3.127 peticions falses, el 60,6 %, demanaven fitxers de credencials o de configuració com `.env` o `.aws/credentials`, rutes de WordPress o panells d'administració; el servidor va respondre 404 en 4.396 de les 5.156.
- Claude-SearchBot i Perplexity-User no van fer ni una sola visita autèntica en tot el mes: tot el que va arribar amb aquests noms venia de fora dels seus rangs oficials.
- Per al robot de Google, acceptar qualsevol nom acabat en googleusercontent.com hauria donat per bones 775 peticions de màquines de Google Cloud que pot llogar qualsevol.
Cada visita deixa una línia al registre
Quan algú obre una pàgina de la teva web, el servidor anota qui ha fet la petició, quan i què ha demanat. Passa el mateix quan qui truca a la porta és un robot: els d'OpenAI, l'empresa de ChatGPT; els d'Anthropic, l'empresa de Claude; els de Google, i els de Perplexity, l'empresa nord-americana del cercador amb IA del mateix nom. Tots deixen la seva línia en aquest fitxer.
A Apache, el servidor web de l'Apache Software Foundation, cada lloc té el seu `access_log`. Als servidors amb tauler de control, cada domini sol tenir el seu a la carpeta de registres del sistema.
Per a aquesta pràctica es va llegir, sense modificar-lo, el registre de twinforce.es des del 30 de setembre de 2026 a les 0.08 fins al 30 d'octubre a les 8.23, en hora UTC: un mes. La pregunta era senzilla: de les visites que diuen venir d'un robot d'IA o del cercador de Google, quantes venen de debò d'aquestes empreses.
El nom l'escriu qui fa la petició
Cada robot es presenta amb el seu nom a l'agent d'usuari. OpenAI posa com a exemple el de GPTBot: «Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot», i avisa que el número de versió pot canviar.
El problema és que aquest text l'escriu el programa que fa la petició. Qualsevol pot copiar la cadena de GPTBot al seu propi programa i fer peticions a la teva web amb ella, i el registre l'anotarà igual que l'autèntica.
Per això les quatre empreses publiquen, a més del nom, la llista d'adreces IP des de les quals surten els seus robots. Comprovar un robot és creuar totes dues coses: el nom que diu i l'adreça des de la qual arriba.
En el format combinat d'Apache, el més habitual, totes dues són a cada línia del registre: la IP, al principi; l'agent d'usuari, entre les dues últimes cometes.
Tres oficis: entrenar, cercar i respondre
No tots els robots d'IA fan el mateix, i cada empresa en fa servir un de diferent per a cada tasca. Uns recorren la web per reunir contingut d'entrenament: GPTBot, que segons OpenAI rastreja contingut «that may be used in training our generative AI foundation models», és a dir, contingut que pot servir per entrenar els seus models fundacionals d'IA generativa, i ClaudeBot, que segons Anthropic recull contingut que podria contribuir a l'entrenament dels seus models.
Altres indexen pàgines per al cercador del mateix assistent: OAI-SearchBot, que segons OpenAI serveix per mostrar webs a la cerca de ChatGPT; Claude-SearchBot, que segons Anthropic millora la qualitat dels seus resultats, i PerplexityBot, que segons Perplexity «is not used to crawl content for AI foundation models», és a dir, no rastreja contingut per entrenar models fundacionals.
El tercer grup no rastreja pel seu compte: visita una pàgina quan un usuari demana alguna cosa a l'assistent. Són ChatGPT-User, Claude-User i Perplexity-User. OpenAI aclareix que ChatGPT-User «is not used for crawling the web in an automatic fashion», és a dir, no recorre la web de manera automàtica.
OpenAI remarca que cada robot es gestiona per separat: «Each setting is independent of the others», és a dir, cada opció és independent de les altres. Pots deixar que OAI-SearchBot et mostri a la cerca de ChatGPT i negar a GPTBot el teu contingut per entrenar.
Google té un cas a part, Google-Extended, que no és un robot: segons Google, no té una cadena d'agent d'usuari pròpia per a les sol·licituds HTTP, i el rastreig es fa amb les dels rastrejadors de Google. Serveix per decidir si el que s'ha rastrejat s'utilitza per entrenar Gemini i per a la fonamentació de les seves respostes, i segons Google no afecta la inclusió dels llocs a la Cerca de Google. Per això no apareix mai en un registre.
Les normes per a robots no són un cadenat
| Robot | Empresa | Per a què serveix | Llista oficial d'IP | Obeeix el robots.txt? |
|---|---|---|---|---|
| GPTBot | OpenAI | Entrenament | gptbot.json | Sí |
| OAI-SearchBot | OpenAI | Cerca a ChatGPT | searchbot.json | Sí |
| ChatGPT-User | OpenAI | Visites demanades per un usuari | chatgpt-user.json | Pot no aplicar-se |
| ClaudeBot | Anthropic | Entrenament | bots.json | Sí |
| Claude-SearchBot | Anthropic | Cerca | bots.json | Sí |
| Claude-User | Anthropic | Visites demanades per un usuari | bots.json i les IP de sortida de l'API | Sí |
| PerplexityBot | Perplexity | Cerca, no entrenament | perplexitybot.json | Sí |
| Perplexity-User | Perplexity | Visites demanades per un usuari | perplexity-user.json | En general, no |
| Googlebot | Cercador de Google | common-crawlers.json i DNS a googlebot.com | Sí | |
| Google-Extended | Permís d'entrenament de Gemini | No rastreja: és només un nom del robots.txt | — |
Els robots que juguen net llegeixen primer el robots.txt de la web. Anthropic diu que els seus tres robots en respecten les directives, i també l'extensió `Crawl-delay`, que la mateixa empresa qualifica de «non-standard», per espaiar les visites. Google afirma que els seus rastrejadors habituals sempre respecten les regles del robots.txt en els rastreigs automàtics.
Els que activa un usuari són una altra història. Per a ChatGPT-User, OpenAI adverteix que, com que aquestes accions les inicia un usuari, «robots.txt rules may not apply», és a dir, pot ser que les regles del robots.txt no s'hi apliquin. Perplexity diu que Perplexity-User «generally ignores robots.txt rules», és a dir, sol ignorar-les, pel mateix motiu.
I Google-Extended només existeix aquí: és el nom que s'escriu al robots.txt per decidir sobre l'entrenament de Gemini.
Cada empresa publica les seves IP en un fitxer
Les llistes oficials són fitxers JSON públics: `gptbot.json`, `searchbot.json` i `chatgpt-user.json`, d'OpenAI; `bots.json`, d'Anthropic, un de sol per als seus tres robots; `perplexitybot.json` i `perplexity-user.json`, de Perplexity, i `common-crawlers.json`, de Google, per al seu robot habitual. Google precisa que les adreces dels seus fitxers estan representades en format CIDR.
Cada fitxer porta la data en què es va generar, i canvien. Dels que es van descarregar el 30 d'octubre de 2026, el de GPTBot era del 22 de setembre; el d'Anthropic, del 20 d'octubre, i el de Google, del 29 d'octubre.
Anthropic publica, de fet, dues llistes. La dels seus robots, de la qual diu: «If a crawler has a source IP address on this list, it indicates that the crawler is coming from Anthropic», és a dir, si la IP d'un rastrejador és en aquesta llista, ve d'Anthropic. I una altra, a la documentació de la seva API, amb les adreces de sortida de les cerques i lectures web que fa Claude com a eines: el bloc 160.79.104.0/21.
Al registre de twinforce.es, set peticions de Claude-User van arribar des d'aquest bloc amb l'agent d'usuari estàndard de Claude-User. No són a la llista de robots, però sí entre les IP oficials de l'empresa, així que en aquesta pràctica compten com a legítimes.
Un script de 32 línies creua nom i IP
| Pas | Què fa | Per què |
|---|---|---|
| 1. Descarrega les llistes | Demana les llistes oficials dels nou robots, identificant-se amb un agent d'usuari propi, i converteix cada rang en una xarxa amb el mòdul `ipaddress`. A Claude-User li suma el bloc de sortida de l'API d'Anthropic. | Les llistes canvien: així sempre es fa servir la del dia |
| 2. Llegeix el registre | Recorre el fitxer línia a línia, també si està en .gz, i en treu de cadascuna la IP (el primer camp), l'agent d'usuari (el que hi ha entre les dues últimes cometes) i la data. | És el format combinat d'Apache |
| 3. Assigna el robot | Busca a l'agent d'usuari el nom de cada robot i es queda amb el primer que troba; descarta les línies que no en tenen cap i les anteriors a la data indicada. | Només compten les peticions que diuen ser un robot |
| 4. Creua i compta | Comprova si la IP cau dins d'algun rang oficial d'aquest robot i suma peticions i IP diferents, dins i fora. | Fora de rang, la petició és d'un impostor |
La comprovació es fa amb un script de 32 línies en Python que només fa servir la biblioteca estàndard: no cal instal·lar res. S'executa amb el registre i la data des de la qual es vol comptar: `python3 verificar_robots.py access_log 30/Sep/2026`. També llegeix registres comprimits en `.gz`.
Fa quatre coses, en aquest ordre. El resultat és una taula per robot amb les peticions i les IP diferents, dins i fora dels rangs oficials.
Per al robot de Google hi ha una segona prova, que s'explica més avall, perquè Google ofereix una altra manera de verificar-lo a més de la seva llista.
Un de cada set era un impostor
| Robot | Peticions que diuen ser-ho | Des d'IP oficial | Impostores | IP oficials | IP impostores |
|---|---|---|---|---|---|
| ClaudeBot (Anthropic) | 13.794 | 13.314 | 480 | 30 | 38 |
| Googlebot | 8.207 | 6.996 | 1.211 | 52 | 68 |
| PerplexityBot | 4.693 | 4.241 | 452 | 12 | 40 |
| GPTBot (OpenAI) | 4.186 | 3.672 | 514 | 56 | 38 |
| OAI-SearchBot (OpenAI) | 2.526 | 2.022 | 504 | 274 | 40 |
| ChatGPT-User (OpenAI) | 1.648 | 1.134 | 514 | 594 | 43 |
| Claude-SearchBot (Anthropic) | 509 | 0 | 509 | 0 | 41 |
| Claude-User (Anthropic) | 508 | 16 | 492 | 3 | 46 |
| Perplexity-User | 480 | 0 | 480 | 0 | 38 |
| Total | 36.551 | 31.395 | 5.156 | — | — |
En el mes analitzat, 36.551 peticions es van presentar com un dels nou robots. 5.156 van arribar des d'adreces que no són a les llistes oficials: un 14,1 %, una de cada set.
Dos noms no van portar ni una sola visita autèntica en tot el mes: Claude-SearchBot i Perplexity-User. Tot el que va arribar amb aquests noms venia de fora dels seus rangs. A l'altre extrem, ClaudeBot va ser el robot autèntic més actiu, i el de Google, el més suplantat, tant en peticions com en IP.
La mesura té dues limitacions. Una eina que s'executa a l'ordinador de l'usuari, com Claude Code, s'identifica com a Claude-User des d'una IP qualsevol, i la comprovació la marca com a impostora. I les llistes es van descarregar el 30 d'octubre. Si algun robot va canviar d'adreça durant el mes, una IP que va ser seva fa setmanes podria sortir avui com a impostora.
Les mateixes disfresses, el mateix objectiu
| Peticions falses | Nombre | Percentatge |
|---|---|---|
| Total | 5.156 | 100 % |
| Des de les 38 IP que van fer servir els nou noms | 4.672 | 90,6 % |
| Demanaven credencials, configuració, WordPress o panells | 3.127 | 60,6 % |
| Van rebre un 404 (no trobat) | 4.396 | 85,3 % |
| Van rebre un 200 (pàgines públiques) | 100 | 1,9 % |
Els impostors no són gaires ni gaire diferents. Les 5.156 peticions falses van sortir de 80 IP, i 38 d'aquestes van fer servir els nou noms: canviaven d'agent d'usuari d'una petició a l'altra. Aquestes 38 adreces van fer 4.672 peticions, el 90,6 % de les falses.
Tampoc no venien a llegir. 3.127 peticions, el 60,6 %, demanaven fitxers de credencials o de configuració que una web estàtica no té: `.env`, `.aws/credentials`, `secrets.json`, `firebase-adminsdk.json` o `config/gcp-credentials.json`, a més de rutes de WordPress i de panells d'administració. Són escombratges automàtics disfressats de robot d'IA.
El servidor va respondre 404, «no trobat», en 4.396 d'aquestes peticions, el 85,3 %. Les 100 que van rebre un 200 demanaven pàgines públiques, com la portada.
El robot de Google es comprova d'anada i tornada
| Què va retornar el DNS invers | Peticions | IP |
|---|---|---|
| `*.bc.googleusercontent.com` (Google Cloud), i la tornada coincideix | 775 | 42 |
| Cap nom | 424 | — |
| Altres proveïdors | 12 | — |
| Total fora de common-crawlers.json | 1.211 | 68 |
Google ofereix, a més de la seva llista, un mètode manual. Es fa una consulta de DNS invers de la IP amb l'ordre `host`, es comprova que el domini és «googlebot.com, google.com o googleusercontent.com» i es fa la consulta directa amb el nom obtingut, que ha de retornar la mateixa IP del registre.
Amb una IP del robot de Google autèntic: `host 66.249.79.72` respon `crawl-66-249-79-72.googlebot.com.`, i `host crawl-66-249-79-72.googlebot.com` retorna `has address 66.249.79.72`. El cercle es tanca.
El parany és quedar-se en «acaba en googleusercontent.com». De les 1.211 peticions de fals robot de Google, 775, des de 42 IP, es resolien en noms `*.bc.googleusercontent.com` i també superaven la tornada: són màquines de Google Cloud, que pot llogar qualsevol. Google no dona aquesta forma de nom per a cap dels seus robots.
Les formes que sí que dona són aquestes: `crawl-…googlebot.com` o `geo-crawl-….geo.googlebot.com` per als seus rastrejadors habituals; `rate-limited-proxy-….google.com` per als de casos especials, i `….gae.googleusercontent.com` o `google-proxy-….google.com` per als que activa un usuari. Per al robot de Google, la regla segura exigeix totes dues coses: un nom `crawl-…googlebot.com` o `geo-crawl-….geo.googlebot.com` i la IP dins de `common-crawlers.json`.
Dues capes per tancar la porta
| Bloc | Què demana |
|---|---|
| User-agent: GPTBot · Disallow: / | Que OpenAI no faci servir el teu contingut per entrenar els seus models |
| User-agent: ClaudeBot · Disallow: / | Que Anthropic exclogui el teu contingut futur de les seves dades d'entrenament |
| User-agent: Google-Extended · Disallow: / | Que Google no el faci servir per entrenar Gemini ni per a la fonamentació; no afecta la Cerca |
| User-agent: OAI-SearchBot · Allow: / | Continuar apareixent a la cerca de ChatGPT |
| User-agent: Claude-SearchBot · Allow: / | Continuar indexat per a les cerques de Claude |
| User-agent: PerplexityBot · Allow: / | Continuar apareixent als resultats de Perplexity |
La primera capa és per als robots de debò, que obeeixen: el robots.txt. Una decisió habitual és deixar que et trobin els cercadors dels assistents i negar el contingut per entrenar. Cada bloc anomena un robot amb `User-agent` i li diu què pot llegir: `Disallow: /` li tanca tota la web i `Allow: /` li l'obre.
La segona capa és per als impostors, que no llegeixen el robots.txt. A Apache 2.4 s'escriu a la configuració del lloc amb una condició `<If>` i l'operador `-R`, que segons la documentació d'Apache equival a comparar la IP del client amb `-ipmatch`, «but more efficient», és a dir, però de manera més eficient. Per a GPTBot són tres línies: `<If "%{HTTP_USER_AGENT} =~ /GPTBot/ && ! -R '20.171.206.0/24' && ! -R '20.171.207.0/24'">`, després `Require all denied` i, al final, `</If>`.
Es llegeix així: si l'agent d'usuari conté GPTBot i la IP no és en cap d'aquests rangs, es denega la petició. L'exemple només mostra dos rangs de la llista d'OpenAI; la regla real porta un `! -R` per cada rang del JSON i cal actualitzar-la quan l'empresa regenera el seu fitxer, o generar-la amb el mateix script. I només frena qui fa servir aquest nom des de fora del rang, no qualsevol escombratge.
Si la teva web passa per Cloudflare, empresa de xarxa de distribució de continguts i de seguretat web, Perplexity publica la mateixa idea com a regla del seu tallafoc, que aparella cada nom amb els seus rangs: `(http.user_agent contains "PerplexityBot" and ip.src in {<PerplexityBot IP ranges>})`. La proposa per deixar passar els seus robots autèntics.
La mesura de fons no és en cap de les dues capes: no tenir `.env` ni credencials a la carpeta pública de la web. L'RFC 9309 ho adverteix: el robots.txt no és «a substitute for valid content security measures», és a dir, un substitut de les mesures de seguretat de debò, i llistar-hi rutes les deixa a la vista.
El que aquesta comprovació no resol
Les llistes d'IP canvien, així que la comprovació val el que valgui la llista del dia. I els robots que activa un usuari, com ChatGPT-User o Perplexity-User, poden no fer cas del robots.txt encara que siguin autèntics.
Bloquejar per IP els robots de debò tampoc no és bona idea. Anthropic avisa que fer-ho «may not work correctly or persistently guarantee an opt-out, as doing so impedes our ability to read your robots.txt file», és a dir, pot no funcionar bé ni garantir l'exclusió, perquè els impedeix llegir el teu robots.txt. La regla del servidor ha de frenar només qui fa servir el nom des de fora del seu rang, mai els rangs oficials.
La sortida de fons és que el robot demostri qui és. Cloudflare descriu Web Bot Auth com un mètode que fa servir «cryptographic signatures in HTTP messages to verify that a request comes from an automated bot», és a dir, signatures criptogràfiques en els missatges HTTP per comprovar que una petició ve d'un robot. Un nom es copia; una signatura feta amb una clau privada, no.
Conclusió
L'agent d'usuari és una targeta de visita que pot imprimir qualsevol. Al registre de twinforce.es, una de cada set peticions que en un mes es van presentar com un robot d'IA o de Google era falsa; gairebé totes venien de les mateixes 38 adreces que anaven canviant de disfressa, i la majoria buscava credencials. Comprovar-ho costa un script de 32 línies i les llistes que publiquen OpenAI, Anthropic, Google i Perplexity; frenar-los, una regla al servidor que s'actualitza amb aquestes mateixes llistes. I hi ha una cosa que cap filtre no substitueix: no deixar secrets on un robot, autèntic o no, els pugui demanar.
Fonts primàries
- OpenAI — Overview of OpenAI Crawlers (consulta 30-10-2026) ↗
- Anthropic — Does Anthropic crawl data from the web, and how can site owners block the crawler? (consulta 30-10-2026) ↗
- Anthropic — IP addresses (consulta 30-10-2026) ↗
- Google — Verificar las solicitudes de los rastreadores y los fetchers de Google (consulta 30-10-2026) ↗
- Google — Rastreadores habituales de Google (consulta 30-10-2026) ↗
- Perplexity — Perplexity Crawlers (consulta 30-10-2026) ↗
- Cloudflare — Web Bot Auth (consulta 30-10-2026) ↗
- Apache HTTP Server — Expressions in Apache HTTP Server (versión 2.4) ↗
- IETF — RFC 9309: Robots Exclusion Protocol ↗
La continuació natural
Aprèn IA al teu ritme amb els nostres cursos gratuïts.
A la nostra plataforma d'aprenentatge TAKU podràs accedir a aquest i a molts altres cursos de manera totalment gratuïta.
APRENDRE AMB TAKU
Comentaris