認証でsocksプロキシを使用すると、Faraday :: ConnectionFailed:ファイルの終わりに達しました
ファラデーを初期化する
Faraday.new do |connection|
connection.proxy = "socks://user:pass<strong i="14">@host</strong>:port"
connection.adapter Faraday.default_adapter
end
リクエストを送信します
モンキーパッチを適用してFaraday :: Adapter :: NetHttpで修正できましたが、それが最善の決定であったかどうかはわかりません。
こんにちは@yarafan 、報告してくれてありがとう。
Faraday::Adapter::NetHttp
にモンキーパッチを適用した方法を教えてください。
私は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なるほど、基本的にNet::HTTP
はsocksプロキシをすぐにサポートしていません。
この場合、これをバグとして分類するのではなく、靴下プロキシをサポートするための機能要求として分類します。
他の機能要求と同様に、これは現在の0.xブランチのすべてのアダプターで解決する必要がありますが、v1.0ブランチでは、すべてのアダプターをファラデーから移動し、Net :: HTTPのみを保持します。
これを紹介する良い機会になります👍
タイトルを更新して問題にラベルを付けます。それ以前にソックスプロキシを使用する必要がある場合は、モンキーパッチを使用できます。
Net :: HTTP.SOCKSProxyに認証サポートを追加します
https://github.com/astro/socksify-ruby/pull/24/files
私はまさにこれをすることを探しています
よくやった@yarafan
やあ。 この機能のステータスはどうなっていますか? まだ開発中ですか?
これを行うためにモンキーパッチを使用する必要がないことに非常に興味があります
@gcolsonはい@technoweenieはすでにほとんどの仕事をしました🎉
ただし、残念ながら、現在、依存PRがマージされるのを待っています。私のコメントを参照してください: https ://github.com/lostisland/faraday/pull/992#issuecomment -508437342
最も参考になるコメント
私はgem'socksify 'を使用します