>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
JavaScript

Cómo subir un archivo a un ciento de servidores de archivos con un clic sin intermediarios

Probablemente has tenido que compartir un archivo pesado, una compilación de software o un video en varios servidores de archivos. Hacerlo manualmente a través de pestañas del navegador es pura tortura. Primero esperas la subida a un servicio, luego copias el enlace, abres el segundo, te sale un captcha, y así en círculos.

Por lo general, en estas situaciones la gente recurre a subidores múltiples web como Mirrored.to o MultiUp. Pero tienen sus propios problemas: límites estrictos de tamaño de archivo para usuarios gratuitos, registro obligatorio para la mitad de las funciones, anuncios intrusivos, y lo más importante — tus archivos primero vuelan al servidor intermedio de otra persona.

Banner de PolyUploader

Hace poco me encontré con un proyecto interesante llamado PolyUploader. Es una aplicación de escritorio abierta que toma un archivo de tu disco (o lo descarga mediante un enlace directo) y simultáneamente lo envía a los servidores seleccionados directamente desde tu computadora.

¿Qué puede hacer PolyUploader?

La función principal del programa es simple: seleccionas un archivo, marcas los servicios deseados e inicias el proceso. La lista de servidores compatibles es impresionante — hay 133 en la tabla del repositorio. Entre ellos se encuentran servicios populares como Gofile, 1fichier, Turbobit, Catbox y Pixeldrain, así como servidores de video especializados como DoodStream, StreamWish o Voe.

Demostración de PolyUploader

Aquí hay varias cosas prácticas que el autor incorporó a la arquitectura:

  • Subir sin cuentas. De los 133 servidores, 96 funcionan en modo completamente anónimo. Sin registros ni inicios de sesión, presionas el botón — obtienes el enlace.
  • Conectar tus propias claves API. Si tienes una cuenta premium o personal en 1fichier, KrakenFiles o Nitroflare, puedes ingresar las claves en la configuración. Entonces la subida va a tu perfil personal con tus propios límites.
  • Protección y agrupación de enlaces. Después de subir, la aplicación recopila los enlaces recibidos en una sola lista. Puedes empaquetarlo en un enlace limpio o encriptarlo a través de PrivateBin, Cryptgeon, SafeLinking o Filecrypt.
  • Perfiles de subida. Para evitar hacer clic en docenas de casillas cada vez, los conjuntos de servidores se guardan como ajustes preestablecidos separados para diferentes tareas.
  • Historial local. PolyUploader recuerda dónde y cuándo subiste archivos, muestra la expiración aproximada del enlace y proporciona un botón de eliminación rápida si el servidor lo admite.
Capturas de pantalla de la interfaz single_upload multiple_upload history api_keys profiles settings_indows_ context_menu

Cómo funciona bajo el capó

El proyecto está construido sobre Tauri. La interfaz de usuario está hecha con una pila web estándar usando Tailwind CSS, mientras que la lógica del sistema, las redes y las operaciones de archivos se ejecutan en un backend en Rust.

Por esto, la aplicación es ligera y usa un mínimo de RAM en comparación con las alternativas basadas en Electron.

La solución de ingeniería más interesante aquí está relacionada con las limitaciones del motor del navegador. Cuando la interfaz web envía solicitudes directamente a un ciento de sitios externos, inmediatamente choca con errores CORS y problemas de cookies entre sitios.

El autor resolvió esto de manera elegante. Un proxy HTTP local basado en la biblioteca warp-cors está embebido dentro del backend en Rust. Cuando la aplicación se inicia, un servidor ligero se activa en el puerto 61337.

// Запуск прокси warp-cors в фоновом рантайме
use tokio::runtime::Builder;
use warp_cors::app::{Config, run};

fn main() {
  std::thread::spawn(|| {
      let rt = Builder::new_multi_thread()
          .enable_all()
          .build()
          .unwrap();
      let cfg = Config { host: "127.0.0.1".into(), port: 61337 };
      rt.block_on(run(cfg));
  });
}

El frontend simplemente envía solicitudes a través de la dirección local:

const proxy = "http://127.0.0.1:61337/";
upload_to_host([
  proxy + "https://upload.gofile.io/uploadfile/",
  "POST",
  sent_data_form
]);

El proxy reenvía el tráfico al sitio objetivo, sustituye los encabezados necesarios y devuelve la respuesta a la interfaz. Sin bailar alrededor de las políticas de seguridad del navegador.

La otra cara de la moneda

El autor admite honestamente en el README que desarrolla el proyecto solo en su tiempo libre fuera de los estudios. Y mantener más de cien servidores en funcionamiento es un trabajo agotador.

Muchos sitios no tienen una API oficial. Para subir un archivo a ellos, tienes que emular el comportamiento del navegador, analizar scripts de formularios y convertir solicitudes cURL a código. Tan pronto como un servicio cambia su diseño o protección, la subida se rompe hasta el siguiente parche.

Además, la aplicación actualmente no puede manejar un lote de diferentes archivos locales en cola para procesamiento por lotes. Tomas un archivo específico y lo replicas en docenas de espejos.

El proyecto incluye telemetría anónima. La aplicación envía solo el nombre del servidor y la fecha de subida al servidor del autor para estadísticas agregadas, sin rutas de archivos ni enlaces finales. Si estás fundamentalmente en contra de la actividad de red del software, el código de la API también está abierto en GitHub, así que puedes verificar fácilmente la lógica tú mismo.

Cómo probarlo

La forma más fácil es revisar la sección de Releases del repositorio. Hay paquetes preconstruidos para Windows (instalador), Linux (AppImage, paquetes deb, rpm) y macOS (imagen dmg).

Si quieres compilar el binario tú mismo, necesitarás tener instalado Rust y la CLI de Tauri:

git clone https://github.com/spel987/PolyUploader.git
cd PolyUploader
cargo install tauri-cli
cargo tauri build

El instalador terminado aparecerá en el directorio src-tauri/target/release/bundle.

A quién le será útil

El proyecto encontrará su lugar con quienes suben regularmente lanzamientos de software, volcados, archivos multimedia o copias de seguridad y quieren espejos confiables en caso de que el almacenamiento principal se caiga.

PolyUploader elimina la necesidad de confiar tus datos a espejos web de terceros y ahorra una cantidad enorme de tiempo rutinario. Si el proyecto te llamó la atención, dale una estrella al autor en GitHub — el mantenimiento en solitario de una base de servidores tan grande realmente requiere una tremenda paciencia.

Proyectos relacionados