如何给 curl 设置代理

操作方法一:通过参数指定

使用 -x--proxy 参数来指定代理服务。

HTTP 代理

curl -x "http://user:pass@127.0.0.1:8888" "https://yuanbiji.net"

如果你的代理服务不需要提供用户名、密码,则 user:pass@ 这部分可以省略。

Socks 代理

curl -x "socks5://user:pass@127.0.0.1:8888" "https://yuanbiji.net"

代理协议部分(sock5://)根据你的代理服务的实际版本来定,其他可能的值还有 sock4://sock4a:// 等。

操作方法二:通过环境变量指定

(此方法仅适用于 Linux 和 macOS。)

curl 可识别 http_proxyhttps_proxy 环境变量并自动使用它们作为代理(前者用于访问 HTTP 资源,后者用于访问 HTTPS 资源)。

设置方法如下:

export http_proxy="http://user:pass@127.0.0.1:8888"
export https_proxy="http://user:pass@127.0.0.1:8888"

在此之后,curl 就会自动使用指定的代理。

需要注意的是,其他命令行工具可能也会读取这两个环境变量作为自己的代理设置。因此在 curl 用完代理之后,你可能希望清除这两个环境变量。方法如下:

unset http_proxy
unset https_proxy

小技巧:你可以把上面两组命令设置为别名,以便在 shell 脚本中快捷调用。

操作方法三:通过配置文件指定

找到 curl 的配置文件(如果不存在就创建):

  • 在 Linux 和 macOS 下,该文件位于 ~/.curlrc
  • 在 Windows 下,该文件位于 %APPDATA%/_curlrc

添加以下内容:

proxy="http://user:pass@127.0.0.1:8888"

这种配置方法是持久的,且不会影响其他工具。

补充说明

  • 通过参数指定代理的优先级是最高的,可以临时覆盖其他两种配置方法。

  • 如果需要临时忽略代理配置,也可以通过参数来指定:

    curl --noproxy "*" "https://yuanbiji.net"
    
标签: curl
最后更新:2023-02-12 13:14:01