Faraday: рдлреИрд░рд╛рдбреЗ рдФрд░ рд╕реЙрдХреНрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╕рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: lostisland/faraday

рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА

  • рдлреИрд░рд╛рдбреЗ рд╕рдВрд╕реНрдХрд░рдг: 0.14, рдПрдбреЗрдкреНрдЯрд░ рдиреЗрдЯ :: HTTP
  • рд░реВрдмреА рд╕рдВрд╕реНрдХрд░рдг: 2.3.1

    рдореБрджреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг

рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдореЛрдЬреЗ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдлреИрд░рд╛рдбреЗ :: рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдлрд▓: рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЕрдВрдд рдкрд╣реБрдВрдЪ рдЧрдпрд╛

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

рдлреИрд░рд╛рдбреЗ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

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

рдФрд░ рдХреЛрдИ рднреА рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдордгрд┐ '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 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдлреИрд░рд╛рдбреЗ :: рдПрдбреЗрдкреНрдЯрд░ :: рдиреЗрдЯрдПрдЪрдЯреАрдкреА рдкреИрдЪрд┐рдВрдЧ рдмрдВрджрд░ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд┐рд░реНрдгрдп рдерд╛

рдирдорд╕реНрддреЗ @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 рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рднреА рдПрдбреЗрдкреНрдЯрд░ рдХреЛ рдлреИрд░рд╛рдбреЗ рд╕реЗ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдиреЗрдЯ :: рдПрдЪрдЯреАрдЯреАрдкреА рдХреЛ рдЕрдВрджрд░ рд░рдЦ рд░рд╣реЗ рд╣реИрдВред
рдЗрд╕реЗ рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдордп рд╣реЛрдЧрд╛

рдореИрдВ рд╢реАрд░реНрд╖рдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд▓реЗрдмрд▓ рдХрд░реВрдВрдЧрд╛, рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдореЛрдЬреЗ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдЖрдкрдХреЗ рдмрдВрджрд░-рдкреИрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

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 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

subvertallchris picture subvertallchris  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

t3hk0d3 picture t3hk0d3  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mvastola picture mvastola  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mokolabs picture mokolabs  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

amrrbakry picture amrrbakry  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ