评估 R 下载中的 Windows PAC 路由
使用 curl 包的 Windows 代理查询获取目标 URL,并把结果应用到执行传输的 handle 上。
Windows 的 PAC 脚本可以按目标地址选择代理。对于用 R 的 curl 包发起的下载,在创建传输 handle 之前,先向它的 Windows 助手查询该 URL 的路由:
url <- "https://example.com/data.csv"
route <- curl::ie_get_proxy_for_url(url)
if (is.null(route)) route <- ""
handle <- curl::new_handle(proxy = route)
connection <- curl::curl(url, handle = handle)按照应用程序通常的连接生命周期读取并关闭连接。这段代码只为该 curl handle 确定路由;它不会配置 R 进程中的每一个网络包。
该助手会读取当前的 Windows 代理配置。启用自动配置时,评估可能会下载并运行 PAC 脚本,因此查询本身可能耗时。请使用真实的目标 URL,而不要用方便但无关的测试站点。
未选中任何代理时,助手返回 NULL。示例中显式的空代理字符串告诉 libcurl 直接完成这次传输,而不是回退到会话中残留的代理环境变量。
PAC 文件的 URL 并不是最终得到的代理端点。把该脚本 URL 当作 handle 的代理值传入,并不会让 libcurl 去评估该脚本。
这次查询返回的是一个选定的代理,而不是适用于每个 PAC 候选的、与浏览器等价的完整故障转移机制。它也不提供身份验证凭据。请只在真正需要此策略的 Windows 客户端和 curl 传输中本地处理。