curl 命令相关技巧
使用代理
最简单的方式,直接指定 SOCKS5 代理主机名:
~# curl --socks5-hostname 127.0.0.1 icanhazip.com
~# curl -x socks5h://127.0.0.1 ipinfo.io/ip
如果使用 SOCKS5 代理,但域名解析在本地完成:
~# curl --socks5 127.0.0.1 ifconfig.me
~# curl -x socks5://127.0.0.1 api.ipify.org
获取服务器 HTTP 版本
可以使用 curl
命令判断服务器是否支持 HTTP2:
~# curl -sI https://tik.top/ -o/dev/null -w '%{http_version}\n'
2
指定网卡并格式化输出
curl
命令支持使用 --interface
参数指定网卡进行请求,并可以使用 -w
参数进行格式化输出:
~# curl --interface eth2 https://www.baidu.com/ -s -o /dev/null -w '%{local_ip}\n%{remote_ip}\n'
上面就是输出 curl
命令使用的本地和远程 IP 地址。
用户认证
例如下载文件需要用户认证,可以增加 -u
参数指定用户名和密码:
~# curl -L -O --anyauth -u "test:password" "http://XXXX/yyy.zip"
上面指定了 --anyauth
参数,curl
命令会自动判断认证方式。
如果指定 --anyauth
参数不能正常工作,就可能需要手工指定认证方式:
--basic
--digest
--ntlm
--negotiate
URL globbing 问题
curl 请求地址中包含 {}[]
之类的字符时会默认启用 URL globbing 功能,此时可能存在问题:
~# curl -L -O "http://driverdl.lenovo.com.cn/think/download/driver/9337/Intel7265wlan[jhwg07ww].exe"
curl: (3) [globbing] bad range in column 72
需要增加 -g
或 -globoff
参数关闭 URL globbing parser 功能才能正常下载。