需求是有时写Shell脚本是需要判断是否是国内服务器,来使用国内CDN或对国内友好的下载源。
正文
地址是:http://104.19.19.19/cdn-cgi/trace
104.19.19.19可以是任意一个CloudFlare CDN的IP
但尽量不要用1.1.1.1之类的国内被阻断的IP
访问http://104.19.19.19/cdn-cgi/trace是这样的

- fl=12f505
 - h=104.19.19.19
 - ip=59.42.75.75
 - ts=1615783919.891
 - visit_scheme=http
 - uag=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36
 - colo=LAX
 - http=http/1.1
 - loc=CN
 - tls=off
 - sni=off
 - warp=off
 - gateway=off
 
这里第3行的ip=59.42.75.75就是本机公网IP,第10行的loc=CN就是地区
使用它们的方法
获取IP:curl -s http://104.19.19.19/cdn-cgi/trace|grep ip|cut -d '=' -f 2
获取地区:curl -s http://104.19.19.19/cdn-cgi/trace|grep loc|cut -d '=' -f 2
当然,你要使用别的,将上面的命令改一下grep ip这里的ip就行了,比如改成uag就是获取UA
shell脚本使用示例
- #!/bin/bash
 - ip=$(curl -s http://104.19.19.19/cdn-cgi/trace|grep ip|cut -d '=' -f 2)
 - loc=$(curl -s http://104.19.19.19/cdn-cgi/trace|grep loc|cut -d '=' -f 2)
 - echo 你的IP:${ip},你的地区:${loc}
 - if [ "${loc}" == "CN" ]; then
 - # 如果是国内地区执行的命令
 - echo "is China"
 - else
 - # 如果不是国内地区执行的命令
 - echo "no China"
 - fi
 
《利用CloudFlare的api获取本机IP和地区》留言数:0