Usar o proxy socks com autenticação leva a Faraday::ConnectionFailed: fim do arquivo atingido
Inicializar Faraday
Faraday.new do |connection|
connection.proxy = "socks://user:pass<strong i="14">@host</strong>:port"
connection.adapter Faraday.default_adapter
end
e faça qualquer pedido
Consegui consertá-lo fazendo um patch de macaco Faraday::Adapter::NetHttp, mas não tenho certeza de que foi a melhor decisão
Oi @yarafan , obrigado por relatar.
Posso te perguntar como você remendou Faraday::Adapter::NetHttp
?
eu uso gem 'socksify'
require "socksify/http"
class Faraday::Adapter::NetHttp
def net_http_connection(env)
if (proxy = env[:request][:proxy])
proxy_class(proxy)
else
Net::HTTP
end.new(env[:url].hostname, env[:url].port || (env[:url].scheme == "https" ? 443 : 80))
end
def proxy_class(proxy)
if proxy.uri.scheme == "socks"
TCPSocket.socks_username = proxy[:user] if proxy[:user]
TCPSocket.socks_password = proxy[:password] if proxy[:password]
Net::HTTP::SOCKSProxy(proxy[:uri].host, proxy[:uri].port)
else
Net::HTTP::Proxy(proxy[:uri].host, proxy[:uri].port, proxy[:uri].user, proxy[:uri].password)
end
end
end
@yarafan Entendo, então basicamente Net::HTTP
não suporta o proxy de meias pronto para uso.
Nesse caso, eu não classificaria isso como um bug, mas mais como uma solicitação de recurso para suportar proxies de meias.
Como qualquer outra solicitação de recurso, isso deve ser resolvido para todos os adaptadores na ramificação 0.x atual, no entanto, para a ramificação v1.0, estamos removendo todos os adaptadores de faraday e mantendo apenas Net::HTTP.
Essa será uma boa hora para apresentar isso 👍
Vou atualizar o título e rotular o problema, se alguém precisar usar proxies de meias antes disso, pode usar seu remendo de macaco
Adicionar suporte de autenticação a Net::HTTP.SOCKSProxy
https://github.com/astro/socksify-ruby/pull/24/files
procuro fazer exatamente isso
Bom trabalho @yarafan
Olá. Qual é o status sobre esse recurso? Ainda está em desenvolvimento?
Eu estaria muito interessado em não ter que usar um patch de macaco para fazer isso
@gcolson sim @technoweenie já fez a maior parte do trabalho 🎉
Infelizmente, no entanto, estamos aguardando a fusão de um PR dependente, veja meu comentário: https://github.com/lostisland/faraday/pull/992#issuecomment -508437342
Comentários muito úteis
eu uso gem 'socksify'