为中间账户使用 open-uri 专用的 Basic 代理选项:

require 'open-uri'

body = URI.open(
  'https://example.com/',
  proxy_http_basic_authentication: [
    'http://203.0.113.10:8080',
    ENV.fetch('PROXY_USER'),
    ENV.fetch('PROXY_PASSWORD')
  ],
  open_timeout: 5,
  read_timeout: 10
) { |response| response.read }

替换文档中的端点,并从指定的密钥来源获取账户值。不要把密码放进 URL,以免异常或支持报告日后将其打印出来。

OpenRead 选项用途
proxy_http_basic_authentication代理地址及其 Basic 用户名/密码.
proxy不使用该组合认证选项来选择代理;同时提供两者会引发参数错误。
http_basic_authentication目标服务器账户。
proxy: nil即使存在环境默认值,也让本次读取直连。

没有显式代理选项时,open-uri 可能使用按协议方案区分的代理环境变量。认证选项本身已包含端点;它不需要再提供第二个 proxy 值。

此接口处理 Basic 代理认证。需要其他机制的服务则需要兼容的客户端或经批准的集成。保持 HTTPS 校验开启,然后按需检查状态/内容:代理登录成功,并不证明目标返回了预期的资源。

相关文章