用于文件下载的 Lua-cURL 代理选项
将代理端结点附加到 Lua-cURL 的 easy handle,并让目标与输出流保留在该次传输中。
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 选项表为这次传输提供固定路由。