Ruby on Rails中使用URI.open时如何配置代理
方法1:直接在URI.open参数中指定代理
这是最灵活的配置方式,直接把代理地址作为proxy参数传入即可,适配你现有代码的示例如下:
require 'open-uri' require 'nokogiri' url = 'https://www.google.com/' # 示例目标地址 # 代理格式通用规则:http://[用户名:密码@]代理IP/域名:端口 proxy_addr = 'http://127.0.0.1:7890' # 替换为你实际的代理地址 doc = Nokogiri::HTML(URI.open(url, proxy: proxy_addr)) # 后续的页面解析逻辑
如果你的代理需要身份认证,直接把账号密码拼接在代理地址前缀即可,示例:http://myuser:mypass@127.0.0.1:7890
方法2:通过系统环境变量配置代理
如果不想在代码里硬编码代理地址,open-uri支持自动读取系统的代理环境变量,无需修改代码即可生效:
- Linux/macOS终端启动Ruby进程前执行:
export http_proxy=http://127.0.0.1:7890 && export https_proxy=http://127.0.0.1:7890 - Windows cmd启动Ruby进程前执行:
set http_proxy=http://127.0.0.1:7890 && set https_proxy=http://127.0.0.1:7890
配置完成后直接调用URI.open(url)就会自动走代理,不需要额外传参。
补充说明
- 如果某一次请求需要强制不走代理,把
proxy参数设为nil即可:URI.open(url, proxy: nil) - 代理地址要和目标站点协议匹配,访问HTTPS站点时优先使用支持HTTPS流量转发的代理
内容的提问来源于stack exchange,提问作者Judy
相关产品推荐
相关产品推荐

