Lua-CURLv3 在用于构建 easy handle 的表中接受 libcurl 选项。把代理写在那里:

local cURL = require "cURL"
local transfer = cURL.easy {
  url = "https://www.example.com/file.bin",
  proxy = "http://proxy.example:8080",
  writefunction = output,
}

local ok, failure = pcall(function()
  transfer:perform()
end)
transfer:close()
if not ok then error(failure) end

这段代码假定 output 是一个以二进制模式打开、由调用方持有的可写文件。调用方在操作结束后关闭它。受保护的调用确保 perform 抛出错误时 easy handle 会被关闭。

URL 仍然标识该文件。代理选项选择中间节点,libcurl 负责处理通往 HTTPS 目标的受支持 HTTP 隧道。对于无需代理账户的允许的公共文件下载,请从 HTTP 代理列表中的条目取得 HTTP 端点。无需手动把文件 URL 改写成代理 URL。

显式选项也让配置来源变得清楚。libcurl 对代理环境的处理是另一个输入;浏览器的操作系统代理偏好并不是每个 Lua 网络库都会自动获得的通用值。

如果请求应当遵循受管理的自动策略,就安排受支持的发现,并把选定的路由传给客户端。easy 选项表为这次传输提供固定路由。

相关文章