Ruby 的 HTTPClient.new 接收的是代理,而不是网站
把 Ruby httpclient gem 构造函数中可选的代理与传给 get 的 URL 分开。
在 Ruby 的 httpclient gem 中,HTTPClient.new 可选的第一参数指定的是代理,而不是客户端应当抓取的网站。
require "httpclient"
client = HTTPClient.new("http://proxy.example.net:8080")
response = client.get("https://example.com/")构造函数选择中间层,其中包括从 HTTP 代理列表 中挑选的公共端点;get 接收的是目标地址。把网站 URL 传给 new 可能让库把该网站当作代理,并报出不支持该代理的错误。
如果没有打算使用显式代理,就不带目标参数构造 HTTPClient.new,并在请求中传入 URL。排查意外路由时,也要检查该 gem 使用的环境代理变量值。
对于代理账号,客户端提供 set_proxy_auth(user, password)。这属于中间层的认证设置,而不属于目标 URL。