You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在httr2中使用代理服务器?无需设置全局curl代理的方案问询

httr2单请求独立设置代理解决方案

httr2没有内置单独的use_proxy()快捷方法,但可以通过req_options()直接给单个请求传入curl原生代理参数,完全不需要修改全局curl配置,完美适配并行爬取、单请求切换代理IP的需求,效果和httr::use_proxy()完全一致。

基础调用方式

给单个请求配置代理的写法如下,替换为你实际的代理信息即可:

library(httr2)

response <- request("https://finance.yahoo.com/") %>%
  # 代理配置,无鉴权代理可删除proxyuserpwd参数
  req_options(
    proxy = "代理IP地址",
    proxyport = 代理端口号,
    proxyuserpwd = "代理用户名:代理密码"
  ) %>%
  req_perform()

如果使用socks5类型代理,额外添加proxytype = 5参数到req_options()中即可。

并行爬取适配示例

如果需要并行请求拆分IP,直接给每个请求绑定代理池中的不同配置即可,各请求的代理配置完全独立,不会互相干扰:

library(httr2)
library(purrr)

# 代理池示例,替换为你的实际代理列表
proxy_pool <- list(
  list(proxy = "1.1.1.1", proxyport = 8080),
  list(proxy = "2.2.2.2", proxyport = 8080),
  list(proxy = "3.3.3.3", proxyport = 8080)
)

# 目标爬取URL列表示例
target_urls <- c(
  "https://finance.yahoo.com/quote/SPY",
  "https://etfdb.com/etf/QQQ/",
  "https://finance.yahoo.com/quote/VOO"
)

# 批量生成绑定独立代理的请求
req_list <- map2(
  target_urls,
  sample(proxy_pool, length(target_urls), replace = TRUE),
  \(url, proxy_cfg) {
    request(url) %>%
      req_options(!!!proxy_cfg) %>%
      req_timeout(10) %>%
      req_user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")
  }
)

# 并行执行请求
parallel_responses <- multi_req_perform(req_list, pool = curl::new_pool(host_con = 10))

注意:该方案所有代理配置仅作用于当前请求,不会修改全局curl设置,也不会影响其他R进程的网络请求。

内容的提问来源于stack exchange,提问作者JJ Fantini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:15:06