Casi toda la seguridad se mira desde adentro: tus servidores, tus logs, tus chequeos de identidad. Hay otro punto de observación que ve lo que el interior no puede — el lado receptor, donde el tráfico efectivamente llega. Desde ahí, la brecha entre lo que un actor dice ser y lo que realmente hace es imposible de ocultar. Acá va un caso real, la técnica detrás, y qué se vuelve visible desde el lado receptor.
Un actor llegó vistiendo una identidad de navegador común — un User-Agent de escritorio estándar, nada que llamara la atención. Pero nunca se comportó como un navegador: sin navegación de página a página, sin ritmo humano. Fue directo a la interfaz REST subyacente del sitio y martilló un único endpoint batch — de los que agrupan muchas llamadas de API en una sola — decenas de veces en una secuencia automatizada y apretada, cada llamada con la forma del tráfico programático fetch. Estaba leyendo la API, no las páginas. Dos detalles lo volvieron inconfundible: corrió la rutina idéntica contra una segunda propiedad no relacionada, y su identidad no se quedó quieta — Windows en un sitio, macOS en el otro. Mismo actor, misma conducta de máquina, dos historias sobre quién era.
Un método que circula online: no necesitás la cooperación del sitio, ni su API, ni su permiso para convertirlo en una fuente de datos programática. Abrís el sitio con el grabador de red activo, navegás las páginas que te interesan, y exportás el tráfico capturado — un archivo HAR y las llamadas fetch en crudo. Se lo pasás a un LLM y le pedís que reconstruya una API limpia, incluso un servidor listo para agentes, a partir de los requests que acaba de ver. Minutos después tenés acceso programático a un sitio que nunca publicó una API. Para sitios detrás de un login, la misma grabación captura la sesión autenticada, y el cliente reconstruido hereda el acceso. El backend puede ver solo requests bien formados y aparentemente legítimos.
Clasificamos actores en dos ejes que el lado receptor siempre puede observar: lo que un actor dice ser (identidad) y lo que realmente hace (conducta). Este se ubicó en el rincón que la mayoría de la detección nunca alcanza — identidad incoherente × conducta totalmente automatizada: un disfraz de navegador, intercambiado entre propiedades, vestido por un cliente que solo habló API. A esta clase la llamamos Reconstructed-Client Harvester — un cliente automatizado reconstruido desde el propio tráfico observado de un sitio, que cosecha a través de la maquinaria debajo de las páginas y no de las páginas mismas. Su firma pública, en los ejes que seguimos:
Superficie de acceso — lector de API (maneja la interfaz subyacente), no lector de páginas.
Coherencia de identidad — rotante: dos sistemas operativos, un actor.
Footprint — cross-property: la misma rutina contra objetivos no relacionados.
Cooperación — ninguna: los rate limits, los términos y el versionado asumen un cliente que no está.
(Cómo detectamos y puntuamos cada eje queda adentro. La taxonomía describe al actor — no al instrumento.)
Imaginá el negocio del lado receptor. Sus datos — contenido, listados, registros, lo que sea que las páginas rendericen desde abajo — drenados a escala, en la menor cantidad de requests posible, por un cliente que nunca autorizó. Sus defensas convencionales pueden no llegar a activarse de manera significativa: ningún login que romper, ningún exploit que atrapar, ninguna alarma que disparar. «No exponemos una API pública» resultó no significar nada. Sus logs registraron unos pocos requests válidos de un visitante plausible. Nada parecía mal. Nada estaba mal — en el papel.
Y acá está la parte que más cuesta: cuando el afectado después quiere actuar — hacer valer sus términos, iniciar un reclamo de protección de datos o de propiedad intelectual, responderle a un regulador, presentar bajo una póliza — puede tener dificultad para probar qué pasó. Sus propios logs son delgados, y la identidad del actor estaba forjada. El único registro que tiene lo escribieron sus propios sistemas y apunta a un disfraz, no a un actor.
El daño no es solo el dato extraído. Es que la pérdida es silenciosa y difícil de sustanciar — descubierta tarde, si es que se descubre, y difícil de establecer cuando importa. Y si algún dato personal o de terceros vivía en esos registros, las personas detrás también fueron alcanzadas — sin que los afectados necesariamente supieran que había ocurrido.
La detección nunca fue la parte difícil de esta historia. La parte difícil es que el afectado queda con poco que se sostenga por sí solo — sobre todo logs propios que registraron fielmente una mentira. Lo que un observador externo del lado receptor puede tener es distinto en naturaleza: un registro tamper-evident de la conducta misma, mantenido por separado de los logs operativos del propio afectado — qué se accedió, con qué ritmo, a través de qué propiedades, bajo qué identidades cambiantes — cuya integridad cualquiera puede verificar, porque no queda bajo el control de la parte que lo guarda.
Dos límites honestos. Ese registro es una observación de conducta, no un veredicto — y la clasificación que le ponemos es nuestra interpretación, no una prueba. Si tal registro puede usarse en un foro particular — una disputa, un reclamo, una pregunta regulatoria — lo deciden otros, no lo prometemos nosotros. Lo que sí podemos decir es más acotado y más duradero: el afectado pasa de «solo mis propios logs, que no muestran nada mal» a un relato mantenido por separado de lo que realmente pasó.
Las dos no coincidieron acá — un navegador que leía APIs, un actor vistiendo dos sistemas operativos — y la identidad perdió. La conducta fue la parte que era real, y la parte que todavía podía observarse desde el único lado posicionado para verla.