Come caricare un file su centinaia di host con un clic, senza intermediari
Probabilmente ti è capitato di dover condividere un archivio pesante, una build software o un video su più host. Farlo manualmente attraverso le schede del browser è una tortura pura. Prima aspetti il caricamento su un servizio, poi copi il link, apri il secondo, ricevi un captcha, e così via in un circolo vizioso.
Di solito in queste situazioni le persone si rivolgono a multi-caricatori web come Mirrored.to o MultiUp. Ma hanno i loro problemi: limiti stringenti di dimensione file per gli utenti gratuiti, registrazione obbligatoria per metà delle funzionalità, annunci intrusivi, e soprattutto — i tuoi file prima volano su un server intermedio di qualcun altro.
Recentemente mi sono imbattuto in un progetto interessante chiamato PolyUploader. È un'applicazione desktop open source che prende un file dal tuo disco (o lo scarica tramite link diretto) e lo invia simultaneamente agli host selezionati direttamente dal tuo computer.
Cosa può fare PolyUploader
La funzionalità principale del programma è semplice: selezioni un file, spunti i servizi desiderati e avvii il processo. La lista degli host supportati è impressionante — ce ne sono 133 nella tabella del repository. Tra questi ci sono servizi popolari come Gofile, 1fichier, Turbobit, Catbox e Pixeldrain, così come host video specializzati come DoodStream, StreamWish o Voe.
Ecco alcune funzionalità pratiche che l'autore ha integrato nell'architettura:
- Caricamento senza account. Su 133 host, 96 funzionano in modalità completamente anonima. Nessuna registrazione o login, premi il pulsante — ottieni il link.
- Connetti le tue chiavi API. Se hai un account premium o personale su 1fichier, KrakenFiles o Nitroflare, puoi inserire le chiavi nelle impostazioni. Così il caricamento va al tuo profilo personale con i tuoi limiti.
- Protezione e raggruppamento dei link. Dopo il caricamento, l'applicazione raccoglie i link ricevuti in un'unica lista. Puoi confezionarli in un unico link pulito o crittografarlo tramite PrivateBin, Cryptgeon, SafeLinking o Filecrypt.
- Profili di caricamento. Per evitare di spuntare decine di caselle ogni volta, i set di host vengono salvati come preset separati per diverse attività.
- Cronologia locale. PolyUploader ricorda dove e quando hai caricato i file, mostra la scadenza approssimativa del link e fornisce un pulsante di eliminazione rapida se l'host lo supporta.
Screenshot dell'interfaccia
Come funziona sotto il cofano
Il progetto è costruito su Tauri. L'interfaccia utente è realizzata con uno stack web standard usando Tailwind CSS, mentre la logica di sistema, il networking e le operazioni sui file girano in un backend Rust.
Per questo, l'applicazione è leggera e usa RAM minima rispetto alle alternative basate su Electron.
La soluzione ingegneristica più interessante qui è legata alle limitazioni del motore del browser. Quando l'interfaccia web invia richieste direttamente a un centinaio di siti esterni, si scontra immediatamente con errori CORS e problemi di cookie cross-site.
L'autore ha risolto questo in modo elegante. Un proxy HTTP locale basato sulla libreria warp-cors è incorporato nel backend Rust. Quando l'applicazione si avvia, un server leggero si avvia sulla porta 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));
});
}
Il frontend semplicemente invia richieste attraverso l'indirizzo locale:
const proxy = "http://127.0.0.1:61337/";
upload_to_host([
proxy + "https://upload.gofile.io/uploadfile/",
"POST",
sent_data_form
]);
Il proxy inoltra il traffico al sito di destinazione, sostituisce gli header necessari e restituisce la risposta all'interfaccia. Nessuna acrobazia attorno alle policy di sicurezza del browser.
Il rovescio della medaglia
L'autore ammette onestamente nel README che sviluppa il progetto da solo nel tempo libero oltre agli studi. E mantenere più di cento host in ordine di funzionamento è un lavoro estenuante.
Molti siti non hanno un'API ufficiale. Per caricare un file su di essi, devi emulare il comportamento del browser, analizzare gli script dei form e convertire le richieste cURL in codice. Non appena un servizio cambia il suo layout o la sua protezione, il caricamento si rompe fino alla prossima patch.
Inoltre, l'applicazione attualmente non può gestire un batch di file locali diversi in coda per l'elaborazione batch. Prendi un file specifico e lo replichi su decine di mirror.
Il progetto include telemetria anonima. L'applicazione invia solo il nome dell'host e la data di caricamento al server dell'autore per statistiche aggregate, senza percorsi dei file o link finali. Se sei fondamentalmente contro l'attività di rete del software, anche il codice API è aperto su GitHub, quindi puoi facilmente verificare la logica da solo.
Come provarlo
Il modo più semplice è controllare la sezione Releases del repository. Ci sono pacchetti pre-costruiti per Windows (installer), Linux (AppImage, pacchetti deb, rpm) e macOS (immagine dmg).
Se vuoi costruire il binario da solo, avrai bisogno di Rust e della CLI di Tauri installati:
git clone https://github.com/spel987/PolyUploader.git
cd PolyUploader
cargo install tauri-cli
cargo tauri build
L'installer finito apparirà nella directory src-tauri/target/release/bundle.
A chi potrebbe essere utile
Il progetto troverà il suo posto con chi carica regolarmente release software, dump, file multimediali o backup e vuole mirror affidabili nel caso in cui lo storage principale cada.
PolyUploader elimina la necessità di fidare i tuoi dati a mirror web di terze parti e fa risparmiare un sacco di tempo di routine. Se il progetto ha attirato la tua attenzione, dai una stella all'autore su GitHub — la manutenzione solitaria di una tale base di host richiede davvero una tremenda pazienza.
Progetti correlati