Un vistazo al interior del antispam de Reddit
(lyra.horse)- Debido a lo que parece haber sido un error temporal de Reddit en 2021, en Relay for reddit quedaron expuestos los motivos de eliminación de spam a nivel de todo el sitio y datos internos de evaluación que normalmente se ocultaban como
Removed: Auto - En el código del archivo público, la información de eliminación se transmite mediante
ban_info.banner; Relay mostrababanned_by=truecomo Auto, pero el problema parece haber surgido cuando en ese mismo campo aparecieron motivos internos - Entre los motivos expuestos estaban
domain,spammit,banned user,shadowban, spamurai, entre otros; spamurai incluía incluso antigüedad de la cuenta, karma, cantidad de reportes, ISP, dominio de correo, User-Agent, encabezado de idioma, huella TLS, referrer y puntaje de Perspective API - El puntaje de SPAM de Google Perspective API coincidía casi exactamente con los valores de los registros de eliminación de Reddit, y se observaron casos en los que el puntaje variaba mucho por características como agregar unos pocos caracteres, reemplazar letras por cirílicas o ignorar mayúsculas/minúsculas y números
- El antispam de Reddit parece ser un sistema de varias generaciones que mezcla verificaciones basadas en Python 2.7, REV1/REV2 basados en reglas Lua, Snooron y herramientas de OCR y clasificación de imágenes; para 2026, se considera que el riesgo de divulgación bajó por el cierre de Perspective API y los cambios en el spam basado en LLM
Motivos de eliminación revelados en 2021
- Un usuario que era moderador de Reddit, mientras recibía notificaciones de spam eliminado en la app Relay for reddit en 2021, vio mensajes internos del antispam que normalmente no deberían ser visibles
- En la pantalla habitual de moderadores, una eliminación automática por spam se muestra como
Removed: Auto, pero en ese momento el motivo real de eliminación y los datos internos aparecían en texto rojo - El fenómeno volvió a la normalidad alrededor de una hora después, y el único material restante son capturas de pantalla tomadas en ese momento
Moderación de Reddit y forma de mostrar Auto
- En los subreddits, las subcomunidades de Reddit, los moderadores de la comunidad se encargan de eliminar publicaciones, bloquear usuarios, administrar modmail, etc.
- Los moderadores pueden ver quién eliminó una publicación o comentario
- Las eliminaciones realizadas por un moderador común se muestran con el nombre del moderador
- Las eliminaciones de AutoModerator se muestran como
AutoModerator - Las eliminaciones hechas por el filtro de spam de todo el sitio de Reddit o por administradores pueden mostrarse como
Auto
- En el registro de moderación, las eliminaciones a nivel de todo el sitio aparecen como
redditoAnti-Evil Operations
Ruta de exposición vista desde el código del archivo público
- Reddit publicó su código fuente hasta 2017, y con ese código archivado se puede rastrear parte del flujo de procesamiento de eliminaciones
- La función de eliminación de moderadores
POST_removellama aadmintools.spammoderator_banneddistingue si quien elimina es un moderador o un administradorbannerregistra el nombre de usuario de quien ejecutó la eliminación
get_mod_attributesexporta elban_infodel elemento eliminado en la respuesta de la API- Si lo eliminó un moderador, devuelve el valor de
bannercomobanned_by - Si lo eliminó un administrador, devuelve
Trueen lugar del nombre real
- Si lo eliminó un moderador, devuelve el valor de
- Según el código descompilado, Relay for reddit cambiaba
bannedBya la cadenaAutocuando era"true" - En Reddit también existía una ruta de código que, al detectar un dominio prohibido al enviar un enlace, ponía el motivo interno en el campo
banner, comobanner = "domain (REASON)" - El campo
bannercon el motivo interno de eliminación debía mostrarse originalmente solo a administradores de todo el sitio, pero se presume que quedó expuesto a moderadores por un error en una ruta de código similar
Categorías de motivos de eliminación expuestos
-
domain- Las eliminaciones basadas en dominio son una categoría que también puede confirmarse en el código público
- La mayoría tenía la forma
Removed: domain (spam), pero en algunos casos incluía notas específicas - Hubo un caso en 2012 en el que se eliminó un dominio específico para un experimento de spam relacionado con Tumblr
- Frases como
le sexxxxy sex spamtambién aparecían como motivo de eliminación
-
spammitspammitparece ser una categoría que analiza publicaciones y les asigna un porcentaje de probabilidad de spam- En los casos de eliminación confirmados, los puntajes iban desde 39.71% hasta 98.19%
- En esos subreddits, muchas publicaciones legítimas de Imgur también fueron eliminadas con puntajes de spam de 70 a 98%, por lo que la precisión no parecía alta
-
Usuarios bloqueados y shadowban
- Hubo eliminaciones con la forma
Removed: banned useroRemoved: Reddit (banall performed) - Esos casos parecían ser en su mayoría publicaciones de spam evidente, como enlaces a servicios publicitarios
- Las publicaciones de usuarios con shadowban se mostraban como
Removed: Reddit (shadowban applied on fecha) - Un shadowban es un bloqueo silencioso en el que el usuario cree que todavía puede publicar, pero sus publicaciones y comentarios no son visibles para otras personas
- Hubo eliminaciones con la forma
Datos internos de evaluación revelados por spamurai
- spamurai es el elemento que más datos internos incluía entre las categorías expuestas
- En materiales públicos de presentación se decía que Reddit usaba Minsky para “ML” y Spamurai para “Rules”
- Los motivos de eliminación de spamurai incluían reglas simples junto con volcados detallados de datos
- Un nombre que parece ser un subsistema llamado
echelonaparecía en eliminaciones por palabras clave específicas - Hubo casos de eliminación cuando cuentas de menos de 30 minutos publicaban comentarios que cumplían condiciones de spam
- Se veían reglas concretas como spam sospechoso de afiliados de camisetas, comentarios solo con URL y comentarios con puntajes altos de Perspective
- Un nombre que parece ser un subsistema llamado
-
Elementos del volcado de datos de spamurai
link t3_...ocomment t1_...son fullname IDs de Redditt1es comentariot2es usuariot3es publicaciónt4es private messaget5es subreddit- El valor
perspective spamse confirmó como el puntaje de SPAM de Google Perspective API - Incluía datos relacionados con la cuenta
- Antigüedad de la cuenta
- Puntaje
spammy - karma
- Cantidad de reportes
- Dominio de correo
- ISP o nombre de la organización
- También contenía datos de conexión y entorno
- Si se usaba
oauth.reddit.com - User-Agent
- Encabezado de idioma
LANG - referrer
RHS, que parece ser una huella del navegador- Un valor que parece ser una huella TLS
- URL de miniatura
- Cuerpo de la publicación o comentario
- Enlace original de Reddit
- Si se usaba
Perspective API y posibilidad de evasión
- El valor
0.12571795 perspective spamde los registros de Reddit coincide prácticamente con el resultado de llamar al atributo SPAM de Perspective API - Al llamar a Perspective API con el mismo texto, devolvió
0.12571794, y la diferencia de 0.00000001 puede considerarse un error de redondeo - El formato de puntajes de ejemplo en la documentación de Perspective y una cita de un caso por parte del CTO de Reddit también se usan como indicios de que Reddit utilizaba Perspective
- El atributo SPAM de Perspective no está destinado a detección de toxicidad, sino que es un atributo experimental para detectar spam, y se indica que fue entrenado con un único conjunto de datos de comentarios del New York Times y datos de moderación
- Desde febrero de 2026 ya no se pueden crear nuevos proyectos de Perspective API en Google Cloud, por lo que se volvió difícil probarlo de nuevo
-
Cambios sensibles en el puntaje de SPAM
- Hubo casos en los que el puntaje SPAM de Perspective cambiaba mucho con solo agregar unas pocas letras
Puppygirl Consulting is the best way to grow your revenueda 0.8638981- Si se agrega
qpal final, baja a 0.010811162 - Los resultados parecían indicar que números y mayúsculas/minúsculas se ignoran
- Cambiar los dígitos de un número telefónico y las mayúsculas/minúsculas devolvía el mismo puntaje
- Algunos otros sistemas de escritura también se procesaban con el mismo puntaje
- Cadenas distintas en cirílico recibían el mismo puntaje 0.35077864
- En
Buy my product, al cambiar laplatina por laрcirílica, el puntaje bajaba de 0.6473346 a 0.4452748 - Es posible que, modificando poco a poco los mensajes tomando como referencia la API pública, se pudiera evadir uno de los principales criterios de decisión de spamurai
Reflejo de reportes de usuarios y aprobaciones de moderadores
- spamurai parece incorporar también reportes de usuarios en sus reglas de eliminación
- El motivo
REPORT: High spam perspective score on comment with hyperlink reported for spamindica que un comentario con hipervínculo reportado como spam fue eliminado por tener un puntaje alto de Perspective, y que un moderador podía volver a aprobarlo - Algunos motivos de eliminación incluían una frase que decía que “si un moderador aprueba este contenido, habrá menos eliminaciones en el futuro”
- El argumento
train_spamenadmintools.spamdel código público de Reddit determina si se usarán las acciones de moderadores para entrenar el antispam - Puede interpretarse que aprobar publicaciones legítimas en un subreddit podría ayudar a reducir falsos positivos
Otras reglas de eliminación e inspección de URLs
- También hubo casos de eliminación de enlaces de redirección de Pinterest, enlaces de
mega.nzy enlaces relacionados con subdominios que pueden crearse libremente - Entre las eliminaciones de enlaces de
mega.nz, también hubo un caso legítimo que en realidad era un enlace a un video archivado de YouTube, por lo que hubo falsos positivos - En el caso
Matched forbidden regex u'torenteu', el texto no contenía directamentetorenteu, pero fue eliminado- Reddit usa
unidecodepara convertir cadenas Unicode a ASCII - La cadena coreana
토렌.트podía convertirse y procesarse adicionalmente hasta coincidir contorenteu
- Reddit usa
- El caso
Failed inspection: Phrase(s) [u'UA-49307539-']no parecía coincidir con el cuerpo del comentario ni con el texto convertido, sino con el ID de Google Analytics dentro del HTML de la página a la que redirigía el enlace inspectionparece ser una operación en la que Reddit abre la URL, sigue redirecciones y busca patrones en la página- Al publicar con una cuenta de prueba un enlace a una página web que contenía esa cadena, una cuenta de 5 años fue bloqueada de inmediato y su historial de publicaciones fue eliminado
- No se pudo reproducir lo mismo con la cuenta de un amigo que tenía más historial de actividad
- Como no estaba claro si ese filtro seguía activo ni si el bloqueo de la cuenta fue casualidad, la cadena real fue modificada antes de publicarse
Componentes pasados y actuales del antispam de Reddit
- En la publicación de Reddit Engineering de 2023 Protecting Reddit Users in Real Time at Scale aparecen Rule-Executor-V1, REV2 y Snooron
- La línea de tiempo entendida es la siguiente
- REV1 se creó en 2016
- Snooron se desarrolló en 2021 para modernizar REV1
- Luego, aproximadamente dos años después, se migró a REV2
- REV1 y REV2 funcionan con reglas Lua, y por cadenas como
nily por la época podrían estar conectados con spamurai - Cadenas Unicode de Python 2.7 como
u'torenteu'yu'UA-49307539-'podrían corresponder a código de inspección basado en Python 2.7 externo a spamurai, o a código separado de inspección de URLs llamado por REV1 - Según una presentación relacionada, Snooron funciona sobre Flink Stateful Functions, realiza clasificación de imágenes y OCR, y usa Python 3 en los workers
- A 2024, Reddit indicó en documentos de Australian eSafety que usa Hive AI y Google Vision OCR API para OCR y clasificación de imágenes y videos
- Se indica que Hive OCR soporta 12 idiomas y Google OCR se usa en conjunto para admitir más idiomas; Reddit también trabaja en una herramienta interna que soporta 80 idiomas
- En un ticket de 2009 se confirmó que un usuario llamado
crm114era un filtro de spam entrenable por moderadores, y CRM114 es un antiguo software open source de clasificación de spam
Por qué se publicó en 2026
- Se consideró que, si esta información se hubiera publicado en 2021, podría haber sido devastadora para el problema de spam de Reddit
- En 2026, Perspective API is shutting down tiene previsto cerrar a fin de año, por lo que, incluso si Reddit aún la usa, pronto tendrá que migrar
- Como los LLM cambiaron la industria del spam, se estima que Reddit probablemente reformó mucho su sistema antispam para adaptarlo a 2026
- Por estas razones, se considera que actualmente, en 2026, el riesgo de publicar esta información es bajo
1 comentarios
Opiniones en Lobste.rs
Material e investigación interesantes. Como se menciona también en la conclusión, rara vez se tiene la oportunidad de ver los detalles de estos mecanismos antiabuso, y lo que llamó especialmente la atención fue el particular dominio de CSS de Lyra.
Las barras de censura y los círculos rojos de la UI reconstruida de Reddit al principio parecían capturas de pantalla, pero en realidad eran una maqueta totalmente interactiva.
Siempre espero con ganas cada nueva publicación del blog. El contenido también es realmente interesante, y la habilidad para recrear otras UI es excelente.
Hasta ahora encontré al menos un easter egg.
Fue bastante fuerte la parte donde, para probarlo con su propia cuenta, subió la cadena
<pre>UA-49307539-2</pre>a un sitio web y la enlazó en Reddit, y una cuenta de prueba de 5 años fue suspendida de inmediato y todo su historial de publicaciones eliminado.Por eso dice que cambió el número real a
UA-49307539-para no publicar texto que pueda matar cuentas; espero que esa cuenta realmente fuera de prueba y no tuviera nada importante.Al intentar abrirlo en Mobile Safari con la beta para desarrolladores más reciente de iOS en un iPhone 16 Pro, aparece en
<url>el error “a problem repeatedly occurred” y no se puede ver.Si alguien pudiera hacer una búsqueda binaria del HTML para encontrar la causa del fallo, se lo agradecería muchísimo.
Para quienes tengan curiosidad: la clave de Perspective API incluida no es válida.
bans (2016 - present), la consultora censurada como ejemplo de spam esPuppygirl Consulting, los adictos a las herramientas de desarrollador pueden tomarlo como una pista de que las partes censuradas probablemente sean falsas o easter eggs :^)