Die Verwendung des Socks-Proxys mit Authentifizierung führt zu Faraday::ConnectionFailed: Dateiende erreicht
Faraday initialisieren
Faraday.new do |connection|
connection.proxy = "socks://user:pass<strong i="14">@host</strong>:port"
connection.adapter Faraday.default_adapter
end
und stellen Sie eine Anfrage
Ich konnte es beheben, indem ich Faraday::Adapter::NetHttp patchte, aber ich bin mir nicht sicher, ob das die beste Entscheidung war
Hallo @yarafan , danke für die Meldung.
Darf ich dich fragen, wie du Faraday::Adapter::NetHttp
gepatcht hast?
Ich benutze 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 Ich verstehe, also unterstützt Net::HTTP
im Grunde genommen keinen SOCKS-Proxy sofort.
In diesem Fall würde ich das nicht als Bug einstufen, sondern eher als Feature-Request zur Unterstützung von Socks-Proxys.
Wie jede andere Funktionsanfrage sollte dies für alle Adapter im aktuellen 0.x-Zweig gelöst werden, aber für den v1.0-Zweig verschieben wir alle Adapter aus Faraday heraus und behalten nur Net::HTTP bei.
Das wird ein guter Zeitpunkt sein, das vorzustellen 👍
Ich werde den Titel aktualisieren und das Problem kennzeichnen. Wenn jemand vorher Socken-Proxys verwenden muss, kann er Ihren Monkey-Patch verwenden
Authentifizierungsunterstützung zu Net::HTTP.SOCKSProxy hinzugefügt
https://github.com/astro/socksify-ruby/pull/24/files
Ich suche genau das zu tun
Gute Arbeit @yarafan
Hi. Wie ist der Stand dieser Funktion? Ist es noch in der Entwicklung?
Ich wäre sehr daran interessiert, dafür keinen Affenpatch verwenden zu müssen
@gcolson yes @technoweenie hat den größten Teil der Arbeit bereits erledigt 🎉
Leider warten wir derzeit jedoch darauf, dass ein abhängiger PR zusammengeführt wird, siehe meinen Kommentar: https://github.com/lostisland/faraday/pull/992#issuecomment -508437342
Hilfreichster Kommentar
Ich benutze Gem 'Socksify'