怎样让 curl 命令通过代理访问

2019年12月31日 | 分类: 【技术】

参考:https://linux.cn/article-9223-1.html

【介绍】

命令行工具(比如 curl 命令,wget 命令,lynx 命令等)使用名为 http_proxy,https_proxy,ftp_proxy 的环境变量来获取代理信息。

它允许你通过代理服务器(使用或不使用用户名/密码都行)来连接那些基于文本的会话和应用,支持发送 HTTP/HTTPS 请求。

【语法】

方法A:

export http_proxy=http://your-ip-address:port/
export http_proxy=http://user:password@your-proxy-ip-address:port/
export https_proxy=https://your-ip-address:port/
export https_proxy=https://user:password@your-proxy-ip-address:port/

方法B:使用 curl 命令的 -x 选项:

curl -x <[protocol://][user:password@]proxyhost[:port]> url
--proxy <[protocol://][user:password@]proxyhost[:port]> url
--proxy http://user:password@Your-Ip-Here:Port url
-x http://user:password@Your-Ip-Here:Port url

【示例】

假设代理信息:

IP: 202.54.1.1
Port: 3128
Username: foo
Password: bar

设置 http_proxy:

export http_proxy=http://foo:bar@202.54.1.1:3128/
export https_proxy=https://foo:bar@202.54.1.1:3128/
curl -I https://www.cyberciti.biz
curl -v -I https://www.cyberciti.biz

下载一个 pdf 文件:

export http_proxy="vivek:myPasswordHere@10.12.249.194:3128/"
curl -v -O http://dl.cyberciti.biz/pdfdownloads/b8bf71be9da19d3feeee27a0a6960cb3/569b7f08/cms/631.pdf

如果使用 -x 选项:

curl -x 'http://vivek:myPasswordHere@10.12.249.194:3128' -v -O https://dl.cyberciti.biz/pdfdownloads/b8bf71be9da19d3feeee27a0a6960cb3/569b7f08/cms/631.pdf

socks 协议语法:

curl -x socks5://[user:password@]proxyhost[:port]/ url
curl --socks5 192.168.1.254:3099 https://www.cyberciti.biz/

让代理设置永久生效:

编辑 ~/.curlrc 文件:

proxy = server1.cyberciti.biz:3128
proxy-user = "foo:bar"

另一种方法:在 ~/.bashrc 文件中创建一个别名:

## alias for curl command
## set proxy-server and port, the syntax is
## alias curl="curl -x {your_proxy_host}:{proxy_port}"
alias curl = "curl -x server1.cyberciti.biz:3128"