Ruby Net::FTP via SOCKS: o login funciona, os downloads travam
Acompanhe as conexões de controle e de dados do Ruby FTP pela mesma rota de proxy pretendida.
O login FTP usa uma conexão de controle. Depois, uma listagem de diretório ou um download precisa de uma conexão de dados, que pode falhar mesmo que o login via SOCKS tenha funcionado.
Identifique primeiro o modo passivo ou ativo. No modo passivo, o cliente abre uma nova conexão para o endereço e a porta fornecidos pelo servidor FTP. Essa conexão também precisa da rota de proxy pretendida.
Integração de sockets no Ruby
A API Net::FTP do Ruby documenta o comportamento de conexão e do modo passivo. Uma integração SOCKS precisa cobrir a criação do socket usada tanto pelo caminho de controle quanto pelo de dados; a configuração de proxy de um cliente HTTP em outro lugar não as configura.
Se a integração altera o comportamento do socket globalmente, revise seu escopo em relação às threads. Um bloco em torno de uma única transferência não isola outras threads das mudanças no estado compartilhado.
Um provedor pode oferecer um endpoint estático, mas isso é um recurso do serviço, não um requisito geral do SOCKS. Onde conexões separadas podem usar saídas diferentes, verifique como o servidor FTP associa sua conexão de dados à conexão de controle autenticada.
Registre o estágio alcançado, o modo e o endpoint de dados, sem as credenciais. Isso distingue um caminho de dados bloqueado de uma falha de login no proxy.