Ha habido muchas cosas que he estado haciendo este mes desde que arrancó septiembre, así que vamos con una nueva entrega de nichijou sahanji, el té y arroz de cada día, para dejarlo todo bien plasmado.
Así que vamos por orden, día a día, como siempre.
📅 1 de septiembre de 2026
Este mes empezó con algo que vi en el servidor NTP del ZimaBlade que había montado hace poco. Resulta que viendo en el script que tengo para ver quiénes piden la actualización NTP en mi red, salían algunas IP que no eran de la red sino de internet, que no eran más que escaneadores de puertos y salían en la lista solo para asustarme, así que lo arreglé para que ya no mostrara esos escaneos que eran cosas del log del router.
Y la extensión Tako-Dame se llevó la tarde pasando de la v1.55 a la v1.59. Puse la opción de bloquear una URL exacta a mano, plegar las listas, y que al abrir las opciones desde una web esa saliera la primera. De paso arreglé una cosa de fondo: bloquear no podía costar una lectura del storage por cada petición. Ahora se permite por adelantado en vez de esperar a que la extensión lo aprenda sola, y saqué las funciones puras a urls-format.js para probarlas bien.
📅 2 de septiembre de 2026
Este día me hice la gran pregunta: ¿podría hacer un gestor de descargas propio y así no gastarme 20 euros en uno? Así nació tako-downloads, rebautizada luego a たこダウンロード. Un motor de descarga multipunto con reanudación y esquema propio tako://, hecha como app nativa para macOS usando Wails.
Y para cuando se acabó el día ya tenía icono propio, papelera para lo que iba borrando, aviso al terminar cada descarga y un panel que enseña el tiempo que lleva y cuántas conexiones está usando de verdad. Hasta la dejé con una sola instancia abierta, por mucho que le dé al enlace desde el navegador.
📅 3 de septiembre de 2026
Día intenso dándole forma a たこダウンロード. Metí yt-dlp como extractor por debajo, le añadí soporte para descargar emisiones HLS pudiendo elegir la calidad y una caché de una hora. Hasta me traje la extensión de Chrome al propio repositorio para no depender de enlaces externos, y rediseñé la ventana para que tuviera ese aspecto nativo de macOS, con sus tarjetas y su menú contextual.
Y también me pasó que en algunos sitios el vídeo salía mudo porque no declaraban el códec, que los enlaces caducaban mientras la descarga estaba parada —ahora al reanudar se piden de nuevo en vez de morirse— y la más tonta de todas: que una app con ventana en macOS no hereda el PATH de la terminal, así que tuve que enseñarle dónde viven yt-dlp y ffmpeg.
La extensión de Chrome también se llevó lo suyo ese día: además de traérmela al repositorio, aprendió a mandarle a la app la página que tengo abierta y a detectar por su cuenta las emisiones en directo.
📅 4 de septiembre de 2026
Rematando la aplicación. Le puse un icono bonito en la barra de menús, su apartado de “acerca de” con la versión, y opciones para volver a bajar un archivo perdido, editar categorías o renombrarlo antes de guardar. Y una cosa importantísima: hacer que descargue primero en local y solo entregue el archivo en el destino final cuando acaba, pensado para cuando la carpeta de destino está en la red y no quieres saturarla copiando a trocitos.
Y el PATH volvió a dar guerra, pero al revés: ahora era yt-dlp el que no encontraba node. También tuve que sacar las acciones del menú fuera del hilo principal, porque la ventana se quedaba congelada mientras pensaba, bajar el sonido por su lado en los sitios que lo sirven en una lista aparte, y poner arriba del todo lo que acabas de descargar, con la hora a la que se bajó.
📅 5 de septiembre de 2026
Me puse otra vez el traje de cazar latencias porque sospechaba que el script takodns-apply.sh estaba subiendo la latencia a Cloudflare. Al final investigué a fondo y quedó descartado por completo. Resultó que el centro de datos de Cloudflare en el que caes es determinista por tu prefijo de IP y no va dando tumbos como yo me temía. De paso vi en el sing-box que unas peticiones de abema.tv se quedaban colgando para siempre en pending en las herramientas de desarrollo.
Por si alguien se pregunta qué es ese script: es el que le vuelve a poner al router las reglas para que todo lo que se conecte en casa pase por mi DNS del ZimaBlade, quiera o no, y de paso cierra el DNS cifrado, que es por donde algunos aparatos intentan escaparse por su cuenta. Hay que pasarlo a mano cada vez que reinicio el router, porque el firmware de ASUS de serie no ejecuta esas cosas al arrancar.
Y eso sí tenía explicación, que además me hizo gracia porque venía de mí misma: cuando bloqueo un dominio contestando 0.0.0.0, el navegador abre la conexión igual y se queda esperando a alguien que no va a contestar nunca; si la página espera por ese archivo, se retrasa la carga entera. Lo cambié para que la respuesta sea directamente que ese dominio no existe, y así ni lo intenta. Son 227.676 dominios que ahora se bloquean de esta forma.
📅 6 de septiembre de 2026
Día dedicado a sing-box. Hice un comando para encenderlo y apagarlo rápido, y un script que cambia el DNS al arrancar y lo restaura al salir (avisando además si algo apunta mal). También documenté toda la configuración para no perderme luego.
Y hubo una cosa que todavía me hace gracia: tuve que poner el DNS del Mac en 8.8.8.8. Si lo dejaba apuntando directamente al ZimaBlade, la ruta de mi propia red le ganaba a las del túnel y las reglas de DNS del túnel dejaban de aplicarse sin avisar de nada, así que había cosas que se resolvían por su cuenta en vez de por donde debían. Con el 8.8.8.8 sí entran por el camino bueno, y como hace tiempo que tengo el router desviando el DNS de Google hacia el ZimaBlade, al final acaba resolviendo mi servidor de siempre. El script se encarga de ponerlo al arrancar y de devolverlo todo a su sitio al salir.
Y ahí saltó una que no me esperaba: los dominios que casan con una regla de túnel se resolvían por fuera, sin pasar por mi propio DNS, así que mis listas de bloqueo no les llegaban nunca. Lo pillé con la telemetría de Netflix, que desde el móvil funcionaba tan tranquila y estaba mandando datos, mientras que desde el Mac me salía como que ese dominio no existía. Los mandé por el camino directo y ya sí les alcanza el bloqueo. Van tres veces este mes que creo que falla la red y resulta ser mi propio montaje.
Y de eso salió algo grave. Me picó la curiosidad de por qué en el registro de sing-box no paraba de aparecer sony.com, una y otra vez, sin descanso. Tirando de ese hilo resultó que mi Mac estaba haciendo de servidor de DNS abierto a internet por la IP pública de mi WireGuard de casa, y que alguien lo estaba usando para amplificar ataques: mandan una consulta minúscula falsificando la dirección de su víctima, y mi máquina le contestaba a esa pobre con una respuesta miles de veces más grande.
Por eso siempre sony.com, que tiene su gracia: no era el objetivo, era la herramienta. Ese dominio tiene ciento y pico registros de texto, así que la respuesta es enorme y el rebote multiplica de maravilla; les habría valido cualquier otro igual de gordo, a Sony no le estaban haciendo nada. Y el diagnóstico traía trampa, porque al parar sing-box las consultas desaparecían y durante un rato pareció que se las inventaba él.
Lo tranquilizador es lo que no pasó: nadie entró en el Mac, no se filtró nada mío y no había ningún servicio escuchando. Un servidor de DNS abierto solo contesta preguntas, que son información pública. Lo que sí pasó es que mi máquina llevaba quién sabe cuánto participando en ataques contra terceros sin enterarme yo, y encima yendo a más: de unas 35 líneas por segundo a 430. El arreglo acabó siendo una cuestión de orden —la regla que rechaza lo que entra tenía que ir antes de la que atiende el DNS, no después—, más meterla en la plantilla para que no se borrase sola en la siguiente reconstrucción. Lo comprobé desde Tokio: el ping contesta, o sea que la máquina sigue ahí y sigue siendo alcanzable, pero el DNS ya no le abre a nadie de fuera.
Pero lo grave fue el susto que se llevó LugoIlmer en el blog: de repente vio que el script de procesar imágenes que tenemos se comió parte del contenido de un post. Lo probé en un borrador de pruebas y resultó ser cosa de las tablas: el script parte el archivo por los tres guiones para separar la cabecera, y las tablas de Markdown llevan esos mismos guiones en la línea del encabezado, así que cortaba ahí y tiraba por la borda todo lo que venía detrás. Y aparte de eso, aproveché para quitar del menú la opción de pasarlo sobre todos los posts del tirón, que con un fallo así era una bomba.
También hubo tanda en las listas de Unbound contra el rastreo de Abema. Cayeron youboranqs01.com y youborafds01.com (las dos patas de la analítica Youbora), lk.ameba.jp y wr.p-c2-x.abema-tv.com, que es un host súper lento del que sigo sin saber para qué sirve; lo comprobé en el móvil y sin él la posición del vídeo se guarda igual.
📅 7 de septiembre de 2026
Volví al sing-box, esta vez con DMM. El vídeo no puede salir por el VPS de ninguna manera: el servidor que lo sirve devuelve un 404 en cuanto ve una IP de centro de datos, así que tiene que ir por la conexión de casa sí o sí. Probé hasta a mandar la lista por un lado y los trozos de vídeo por otro, y nada. También bloqueé dos dominios de telemetría suyos, moviéndolos antes al grupo directo para que el bloqueo les alcanzara, que es la misma lección de ayer.
Y me pasé un rato peleando con un cambio que no hacía absolutamente nada. Resulta que en mi configuración las reglas escritas como expresión regular se colocan antes que las que van por terminación del dominio, así que la expresión regular gana siempre. Podía mover el dominio de grupo las veces que quisiera, que mientras no moviera también la expresión que lo abarcaba, seguía saliendo por donde a ella le daba la gana.
Y fue el día grande de Tako-Dame: de la v1.60 a la v1.69 del tirón. Primero peleé con los detectores de bloqueadores, que resultó que tenían dos puertas y no una, y de paso le cambié el enfoque: en vez de esconderse del detector, contestarle.
Pero lo más grande fue sacarla de Chrome y llevarla a Safari, con el iPhone como destino. Lo que más me gusta de cómo quedó montado es que el proyecto de Xcode no se lleva una copia de la extensión, sino que apunta a la carpeta de siempre. Así sigo editando donde editaba, compilo, y el teléfono se lleva lo último sin copiar nada a mano. El precio fue que se metía la carpeta entera dentro de la aplicación —las pruebas, la documentación y hasta los propios scripts—, así que hice otro script que la corta y deja pasar solo lo que tiene que ir dentro.
Por el camino, las cosas de Safari: comparte un array entre claves que ni existen, se le colaba un triste .swf que en Chrome no pasaba, y el selector de ficheros de iOS directamente no abre, así que para llevarme el perfil de un sitio a otro el respaldo acabó siendo copiar y pegar texto a lo bruto. También rehíce el popup pensando en el dedo y no en el ratón, y escondí el interruptor de apagar JavaScript por sitio, porque esa pieza en Safari no existe y un botón que no hace nada es peor que no tenerlo: parece que la extensión está rota.
Y lo que me toca de aquí en adelante: reinstalarla en el teléfono cada siete días. Como la firmo con una cuenta gratuita de Apple, la aplicación caduca a la semana y hay que volver a compilarla y pasarla otra vez. Es el peaje por no pagar la cuota anual de desarrollador.