>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
JavaScript

Como Enviar um Arquivo para Centenas de Hosts de Arquivos com Um Clique Sem Intermediários

Provavelmente você já precisou compartilhar um arquivo grande, build de software ou vídeo em vários hosts de arquivos. Fazer isso manualmente através de abas do navegador é pura tortura. Primeiro você espera o upload para um serviço, depois copia o link, abre o segundo, leva um captcha, e assim por diante em círculos.

Normalmente, nessas situações, as pessoas recorrem a multi-uploaders web como Mirrored.to ou MultiUp. Mas eles têm seus próprios problemas: limites rigorosos de tamanho de arquivo para usuários gratuitos, registro obrigatório para metade dos recursos, anúncios intrusivos e, o mais importante — seus arquivos primeiro voam para o servidor intermediário de outra pessoa.

PolyUploader banner

Recentemente encontrei um projeto interessante chamado PolyUploader. É um aplicativo desktop de código aberto que pega um arquivo do seu disco (ou baixa via link direto) e simultaneamente envia para os hosts selecionados diretamente do seu computador.

O que o PolyUploader Pode Fazer

O recurso principal do programa é simples: você seleciona um arquivo, marca os serviços desejados e inicia o processo. A lista de hosts suportados é impressionante — são 133 na tabela do repositório. Entre eles estão serviços populares como Gofile, 1fichier, Turbobit, Catbox e Pixeldrain, além de hosts de vídeo especializados como DoodStream, StreamWish ou Voe.

PolyUploader showcase

Aqui estão várias funcionalidades práticas que o autor construiu na arquitetura:

  • Upload sem contas. Dos 133 hosts, 96 funcionam em modo totalmente anônimo. Sem registros ou logins, apertou o botão — pegou o link.
  • Conecte suas próprias chaves de API. Se você tem uma conta premium ou pessoal no 1fichier, KrakenFiles ou Nitroflare, pode inserir as chaves nas configurações. Então o upload vai para o seu perfil pessoal com seus próprios limites.
  • Proteção de links e bundles. Após o upload, o aplicativo coleta os links recebidos em uma única lista. Você pode empacotar em um link limpo ou criptografar através do PrivateBin, Cryptgeon, SafeLinking ou Filecrypt.
  • Perfis de upload. Para evitar clicar em dezenas de checkboxes toda vez, conjuntos de hosts são salvos como presets separados para diferentes tarefas.
  • Histórico local. O PolyUploader lembra onde e quando você fez upload de arquivos, mostra a expiração aproximada do link e fornece um botão de exclusão rápido se o host suportar.
Capturas de tela da interface single_upload multiple_upload history api_keys profiles settings_windows_context_menu

Como Funciona Por Trás dos Panos

O projeto é construído com Tauri. A interface do usuário é feita com uma stack web padrão usando Tailwind CSS, enquanto a lógica do sistema, rede e operações de arquivo rodam em um backend em Rust.

Por causa disso, o aplicativo é leve e usa RAM mínima comparado a alternativas baseadas em Electron.

A solução de engenharia mais interessante aqui está relacionada às limitações do motor do navegador. Quando a interface web envia requisições diretamente para uma centena de sites externos, ela imediatamente encontra erros de CORS e problemas de cookies entre sites.

O autor resolveu isso de forma elegante. Um proxy HTTP local baseado na biblioteca warp-cors é embutido dentro do backend em Rust. Quando o aplicativo inicia, um servidor leve sobe na 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));
  });
}

O frontend simplesmente envia requisições através do endereço local:

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

O proxy encaminha o tráfego para o site de destino, substitui os cabeçalhos necessários e retorna a resposta para a interface. Sem precisar dançar em torno das políticas de segurança do navegador.

O Lado Negativo da Moeda

O autor admite honestamente no README que desenvolve o projeto sozinho no tempo livre fora dos estudos. E manter mais de uma centena de hosts funcionando é um trabalho exaustivo.

Muitos sites não têm uma API oficial. Para fazer upload de um arquivo neles, você tem que emular o comportamento do navegador, analisar scripts de formulário e converter requisições cURL em código. Assim que um serviço muda seu layout ou proteção, o upload quebra até o próximo patch.

Além disso, o aplicativo atualmente não consegue lidar com um lote de arquivos locais diferentes enfileirados para processamento em lote. Você pega um arquivo específico e replica para dezenas de espelhos.

O projeto inclui telemetria anônima. O aplicativo envia apenas o nome do host e a data de upload para o servidor do autor para estatísticas agregadas, sem caminhos de arquivos ou links finais. Se você é fundamentalmente contra atividade de rede de um software, o código da API também é aberto no GitHub, então você pode facilmente verificar a lógica sozinho.

Como Experimentar

A forma mais fácil é verificar a seção Releases do repositório. Existem pacotes pré-construídos para Windows (instalador), Linux (AppImage, pacotes deb, rpm) e macOS (imagem dmg).

Se você quiser construir o binário sozinho, precisará ter o Rust e o Tauri CLI instalados:

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

O instalador finalizado aparecerá no diretório src-tauri/target/release/bundle.

Quem Vai Encontrar Útil

O projeto encontrará seu lugar com aqueles que regularmente fazem upload de lançamentos de software, dumps, arquivos de mídia ou backups e querem espelhos confiáveis caso o armazenamento principal caia.

O PolyUploader elimina a necessidade de confiar seus dados a espelhos web de terceiros e economiza muito tempo de rotina. Se o projeto chamou sua atenção, dê uma estrela ao autor no GitHub — a manutenção solo de tal base de hosts realmente requer paciência tremenda.

Projetos relacionados