El uso de proxy de calcetines con autenticación conduce a Faraday::ConnectionFailed: se alcanzó el final del archivo
Inicializar Faraday
Faraday.new do |connection|
connection.proxy = "socks://user:pass<strong i="14">@host</strong>:port"
connection.adapter Faraday.default_adapter
end
y hacer cualquier pedido
Pude arreglarlo parcheando Faraday::Adapter::NetHttp, pero no estoy seguro de que haya sido la mejor decisión.
Hola @yarafan , gracias por informar.
¿Puedo preguntarte cómo reparaste Faraday::Adapter::NetHttp
?
yo uso la gema '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 Ya veo, así que básicamente Net::HTTP
no es compatible con el proxy de calcetines listo para usar.
En este caso, no clasificaría esto como un error, sino más bien como una solicitud de función para admitir proxies de calcetines.
Como cualquier otra solicitud de función, esto debería resolverse para todos los adaptadores en la rama 0.x actual; sin embargo, para la rama v1.0 estamos sacando todos los adaptadores de faraday y manteniendo solo Net::HTTP.
Ese será un buen momento para presentar esto 👍
Actualizaré el título y etiquetaré el problema, si alguien necesita usar proxies de calcetines antes de eso, puede usar su parche de mono
Agregar soporte de autenticación a Net::HTTP.SOCKSProxy
https://github.com/astro/socksify-ruby/pull/24/files
Estoy buscando hacer exactamente esto
Buen trabajo @yarafan
Hola. ¿Cuál es el estado de esta función? ¿Todavía está en desarrollo?
Me interesaría mucho no tener que usar un parche de mono para hacer esto.
@gcolson sí @technoweenie ya hizo la mayor parte del trabajo 🎉
Desafortunadamente, sin embargo, actualmente estamos esperando que se fusione un PR dependiente, vea mi comentario: https://github.com/lostisland/faraday/pull/992#issuecomment -508437342
Comentario más útil
yo uso la gema 'socksify'