L'utilisation du proxy socks avec auth conduit à Faraday :: ConnectionFailed : fin de fichier atteinte
Initialiser Faraday
Faraday.new do |connection|
connection.proxy = "socks://user:pass<strong i="14">@host</strong>:port"
connection.adapter Faraday.default_adapter
end
et faire toute demande
J'ai pu le réparer en corrigeant Faraday::Adapter::NetHttp, mais je ne suis pas sûr que ce soit la meilleure décision
Salut @yarafan , merci pour le signalement.
Puis-je vous demander comment vous avez patché Faraday::Adapter::NetHttp
?
j'utilise la gemme '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 Je vois, donc fondamentalement Net::HTTP
ne prend pas en charge le proxy chaussettes prêt à l'emploi .
Dans ce cas, je ne classerais pas cela comme un bogue, mais plutôt comme une demande de fonctionnalité pour prendre en charge les proxies chaussettes.
Comme toute autre demande de fonctionnalité, cela devrait être résolu pour tous les adaptateurs de la branche 0.x actuelle, mais pour la branche v1.0, nous déplaçons tous les adaptateurs de faraday et ne conservons que Net :: HTTP.
Ce sera le bon moment pour le présenter 👍
Je vais mettre à jour le titre et étiqueter le problème, si quelqu'un a besoin d'utiliser des proxies de chaussettes avant cela, il peut utiliser votre patch de singe
Ajouter la prise en charge de l'authentification à Net :: HTTP.SOCKSProxy
https://github.com/astro/socksify-ruby/pull/24/files
Je cherche à faire exactement ça
Bon travail @yarafan
Salut. Où en est cette fonctionnalité ? Est-il encore en développement ?
Je serais très intéressé de ne pas avoir à utiliser un patch de singe pour le faire
@gcolson oui @technoweenie a déjà fait la plupart du travail 🎉
Malheureusement, cependant, nous attendons actuellement la fusion d'un PR dépendant, voir mon commentaire : https://github.com/lostisland/faraday/pull/992#issuecomment -508437342
Commentaire le plus utile
j'utilise la gemme 'socksify'