Si tienen root en su server y usan nginx, pueden hacer que éste rechace el user-agent de éstos bots, en la conf de nginx en *debian* es así:

creamos: /etc/nginx/conf.d/antibots.conf con esto:

map $http_user_agent $is_bot {
default 0;
"Python/3.10 aiohttp/3.14.3" 1;
}

Y en la conf del vhost de mastodon agregamos después del server_name:

if ($is_bot)
return 403;
}

Puede cambiar 403 por 418 ó 420 ó 451 ó 499 :blobcatgiggle:

¿de dónde salió ese user-agent? de los logs, en la lista de registros ven la ip del bot y luego la buscan:

$ grep 119.150.23.168 /var/log/nginx/mstdn-access.log.1
119.150.23.168 - - [10/Sep/2026:16:35:54 -0600] "POST /api/v1/accounts HTTP/1.1" 200 149 "-" "Python/3.10 aiohttp/3.14.3"

Si cambian el user-agent pueden buscarlo así. (al menos hasta que aprendan a aleatorizarlo 😰)

Pues ya aprendieron a cambiar el User-Agent, ahora se identifican como un chrome en una mac intel.

El último recurso: bloquearlos por IP

1. Primero sacamos las IP's de la lista de registros pendientes por aprobar, directo de la BD:
psql -h localhost -U $DBUSER -d $DBNAME -t -A -c "SELECT u.sign_up_ip FROM users u JOIN accounts a ON a.id = u.account_id WHERE u.approved = false AND a.username LIKE 'bp%' ORDER BY u.created_at ASC;" | sort -u > ips.txt

Yo uso ipset:

Creamos el bloque:
sudo ipset create botblock hash:ip

Agregamos las ips al bloque:
while read -r ip; do sudo ipset -exist add botblock "$ip"; done < ips.txt

Le decimos a iptables que bloquee todas las ips que están en ese bloque
sudo iptables -I INPUT -m set --match-set botblock src -j DROP

Como van a estar generando el ips.txt cada que haya nuevos registros con nuevas ips, agregué el -exist para que ipset add no dé fallo si es que la ip ya está agregada