net/http使用代理导致EOFError(到达文件末尾)



我正在尝试使用NORD VPN代理在ruby中发出请求。代理很好,我已经用curl和python脚本成功地测试了它。

然而,我无法在ruby中实现它,我怀疑这与代理中使用的奇数端口(89(有关,因为在使用端口80之前,我已经在ruby中成功地实现了这一点。

欢迎任何建议,希望你能指出我代码中的一个缺陷!

require "uri"
require 'net/http'
proxy_host = 'no179.nordvpn.com'
proxy_port = 89
proxy_user = 'user'
proxy_pass = 'pass'
uri   = URI.parse("https://api.ipify.org/")
proxy = Net::HTTP::Proxy(proxy_host, proxy_port, proxy_user, proxy_pass)
req = Net::HTTP::Get.new(uri.path)
result = proxy.start(uri.host, uri.port) do |http|
http.request(req)
end

错误:

3.0.2/lib/ruby/gems/3.0.0/gems/net-protocol-0.1.2/lib/net/protocol.rb:227:in 'rbuf_fill': end of file reached (EOFError)

顺便说一句,我觉得值得一提的是,我尝试了以下http客户端,结果相同:

  • HTTParty(相同错误(
  • 法拉第(相同误差(
  • http.rb
    • 3.0.2/lib/ruby/gems/3.0.0/gems/http-5.0.4/lib/http/connection.rb:108:in 'read_headers!': couldn't read response headers (HTTP::ConnectionError)

Ruby版本:3.0.2

我没有NordVPN帐户,所以我不能真正测试,但看起来他们正在关闭HTTP代理https://nordvpn.com/es/blog/removing-http-proxies/

我建议你先试试这个SOCK代理https://net-ssh.github.io/ssh/v2/api/classes/Net/SSH/Proxy/SOCKS5.html

最新更新