Julia 的 Downloads 标准库使用 libcurl。请在启动执行下载的进程之前提供代理环境:

export http_proxy='http://proxy.example:8080'
export https_proxy='http://proxy.example:8080'
export no_proxy='localhost,127.0.0.1'
julia fetch.jl

示例 fetch.jl 可以使用普通的 Downloads API:

using Downloads
Downloads.download(
    "https://downloads.example/data.csv",
    "data.csv";
    timeout = 30,
)

https_proxy 变量选择通往 HTTPS 目标的路径;http:// 值表示一个普通 HTTP 代理。对于允许使用公共端点的下载,HTTP 代理列表为该值提供候选。除非代理监听器本身支持 TLS,否则不要把该值改成 https://。

libcurl 只接受小写的 http_proxy。其他协议的代理变量也有大写形式。它的绕过约定是 no_proxy 或 NO_PROXY,条目以逗号分隔;http_no_proxy 并不是有文档记载的通用绕过变量。

由 IDE 或后台服务启动的 Julia 进程会继承该启动器的环境。稍后在另一个终端里导出的变量不会重新配置它。

为便于诊断,Downloads.download 接受 verbose=true,其调试回调可以收到详细的传输事件。请在本地查看该输出,并在分享前删除机密信息。

使用其他 HTTP 实现的包需要单独审查其配置。一次成功的 Downloads 调用只能确定该请求的行为,不能代表 Julia 中写成的每一个网络操作。

相关文章