curl 是一个很有名的处理网络请求的 类Unix 工具。出于某种原因,我们进行网络请求,需要设置代理。本文讲全面介绍如何为 curl 设置代理
-x, --proxy [protocol://]host[:port]
下面两种设置代理的方式是可以的
- curl -x "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"
-
- curl --proxy "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"
由于代理地址的默认协议为 HTTP,所以可以省略,按照下面的形式也是可以的
curl --proxy "user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"
- # 未加代理
- curl --location --request GET 'jisutqybmf.market.alicloudapi.com/weather/query?citycode=101010100' \
- --header 'Authorization: APPCODE 97423e60d80c47bd829e334d85a2156a'
-
- # 加代理
- curl -x "http://proxy_ip:port" --location --request GET 'jisutqybmf.market.alicloudapi.com/weather/query?citycode=101010100' \
- --header 'Authorization: APPCODE 97423e60d80c47bd829e334d85a2156a'
除了直接使用 curl
参数选项外,还可以使用全局的环境变量来处理,其中关于环境变量
~/.bashrc
或者~/.zshrc
- # 设置 http proxy
- export http_proxy="http://user:pwd@127.0.0.1:1234"
-
- # 设置 https proxy
- export https_proxy="http://user:pwd@127.0.0.1:1234"
取消 HTTP/HTTPS 代理
- unset http_proxy
- unset https_proxy
此外还有第三种方法,就是为 curl 设置专有名词的配置文件
~/.curlrc
文件vim ~/.curlrc
proxy="http://user:pwd@127.0.0.1:1234"
当存在多个代理配置的时候,curl 配置选项的优先级最高,因此可以使用下面的方法覆盖其他的配置
curl --proxy "http://user:pwd@1.0.0.1:8090" "http://httpbin.org/ip"
当存在其他的代理配置文件时,我们却不希望使用代理,可以使用下面的方式进行代理忽略
curl --noproxy "*" "http://httpbin.org/ip"