为方便学术资源查阅,借助其EarthVPN免费VPN节点进行科学上网。结合所学技术,抓取接口信息,编写Shell脚本。
Shell脚本
执行效果
脚本内容
#!/bin/bash
# EarthVPN免费节点链接列表获取
# Author: admin@lolicp.com
# Date: 2023-03-25
# Version: 0.0.2
随机Md5值
Time_Stmp=date +%s |md5sum|head -c 32
获取节点列表
Earth_VPN_List=curl -s -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36' "https://earth-vpn.net/servers/?id=nabbmpekekjknlbkgpodfndbodhijjem&t=1612946444175&mt=1612946444172&lt=46817&uid=a1164cd1-b429-4b27-b327-125c31ce8bc1&hash=${Time_Stmp}" |jq -r '.locations[]'
获取节点区域
Earth_VPN_Country_Name_List=echo "${Earth_VPN_List}"|jq -r '.country_name'
以换行符为分隔符
IFS=$'\n'
循环输出节点区域代理
`for Earth_VPN_Country_Name in ${Earth_VPN_Country_Name_List};do
格式化节点信息
Earth_VPN_Country_Node_List=echo "${Earth_VPN_List}" |jq -r "select(.country_name==\"${Earth_VPN_Country_Name}\")"|jq -r ".nodes[]"|awk '{if(NR%5==0){printf $0 "\n"}else{printf "%s",$0}}'|sed 's/ //g'
for Earth_VPN_Country_Node in ${Earth_VPN_Country_Node_List};do
链接方式
Earth_VPN_Country_Node_Schema=echo "${Earth_VPN_Country_Node}"|jq -r .schema
IP地址
Earth_VPN_Country_Node_Address=echo "${Earth_VPN_Country_Node}"|jq -r .ip
IP端口
Earth_VPN_Country_Node_Port=echo "${Earth_VPN_Country_Node}"|jq -r .port
VPN_Connected_Info=nc -zv -w 0.5 "${Earth_VPN_Country_Node_Address}" "${Earth_VPN_Country_Node_Port}" 2>&1
if [[ "${VPN_Connected_Info}" =~ "Connected to ${Earth_VPN_Country_Node_Address}:${Earth_VPN_Country_Node_Port}" ]];then
链接时间
VPN_Connected_Time=echo "${VPN_Connected_Info}"|awk '/0 bytes sent,/ {print $9}'
echo "${VPN_Connected_Time}s,Zone: ${Earth_VPN_Country_Name} ,Type:${Earth_VPN_Country_Node_Schema} ,Address: ${Earth_VPN_Country_Node_Address}:${Earth_VPN_Country_Node_Port}"
fi
done
done`