Faraday: فاراداي والجوارب بالوكالة مع المصادقة المؤيدة

تم إنشاؤها على ١١ أبريل ٢٠١٨  ·  9تعليقات  ·  مصدر: lostisland/faraday

معلومات أساسية

  • إصدار فاراداي: 0.14 ، محول نت :: HTTP
  • إصدار روبي: 2.3.1

    وصف المشكلة

يؤدي استخدام بروكسي socks مع المصادقة إلى Faraday :: ConnectionFailed: تم الوصول إلى نهاية الملف

خطوات التكاثر

تهيئة فاراداي

    Faraday.new do |connection|
      connection.proxy = "socks://user:pass<strong i="14">@host</strong>:port"
      connection.adapter Faraday.default_adapter
    end

وتقديم أي طلب

feature v1.0

التعليق الأكثر فائدة

أستخدم الأحجار الكريمة "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

ال 9 كومينتر

لقد تمكنت من إصلاحه عن طريق ترقيع القرد Faraday :: Adaptor :: NetHttp ، لكنني لست متأكدًا من أن هذا كان أفضل قرار

مرحبًا yarafan ، شكرًا على الإبلاغ.
هل يمكنني أن أسألك كيف يمكنك تثبيت القرد Faraday::Adapter::NetHttp ؟

أستخدم الأحجار الكريمة "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 لا يدعم بروكسي الجوارب خارج الصندوق.
في هذه الحالة ، لن أصنف هذا على أنه خطأ ، ولكنني سأصنفه على أنه طلب ميزة لدعم بروكسيات الجوارب.
مثل أي طلب ميزة آخر ، يجب حل هذا لجميع المحولات في فرع 0.x الحالي ، ولكن بالنسبة لفرع v1.0 ، فإننا ننقل جميع المحولات خارج faraday ونحتفظ فقط بـ Net :: HTTP.
سيكون هذا هو الوقت المناسب لتقديم هذا 👍

سأحدِّث العنوان وسأسم المشكلة ، إذا احتاج أي شخص إلى استخدام بروكسيات الجوارب قبل ذلك الحين ، فيمكنه استخدام رقعة القرد الخاصة بك

أضف دعم المصادقة إلى Net :: HTTP.SOCKSProxy
https://github.com/astro/socksify-ruby/pull/24/files

أنا أبحث عن القيام بهذا بالضبط

عمل جيد yarafan

أهلا. ما هي حالة هذه الميزة؟ هل ما زالت قيد التطوير؟
سأكون مهتمًا جدًا بعدم الاضطرار إلى استخدام رقعة القرد للقيام بذلك

gcolson ، نعم ، لقد قام technoweenie بمعظم المهمة بالفعل 🎉
لسوء الحظ ، ومع ذلك ، نحن ننتظر حاليًا دمج علاقات عامة تابعة ، انظر تعليقي: https://github.com/lostisland/faraday/pull/992#issuecomment -508437342

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات