向外访问网络行为次序随机的场景下 预设网络资源 预设替代命令
前言
现在我们来处理 次序随机的场景
典型例子就是 233脚本.
我们先在无预设命令的条件下, 执行一遍安装过程.
cd fake-curl-wget-sh-mainsource fake-curl-wget-v2.shcdbash install-233.sh
然后分析日志.
需求
编辑 __fake_net_common.sh , 添加预设命令.
因为网络访问的次序是随机的, 所以我们只能从网络资源的特征入手.
我们要对
wget --no-check-certificate -t 3 -q -c https://github.com/233boy/xray/releases/latest/download/code.zip -O /tmp/tmp.dO84swIzMs/tmpsh
设置预设命令
cp /root/code.zip /tmp/tmp.dO84swIzMs/tmpsh
结合上一篇的 第几个参数 的经验 再问问GPT 怎么在shell脚本中实现匹配关键字.
得到
if printf '%s\n' "$@" | grep -qE '^http.*code\.zip$'; then# 有参数是 http开头 code.zip结尾cp /root/code.zip "$8"has_preset=1fi
同样的思路, 处理 xray-linux-64.zip, 处理 jq-linux-amd64
再来处理 wget --no-check-certificate -4 -qO- https://one.one.one.one/cdn-cgi/trace
我们要先判断 包含 one.one.one.one 这个特征, 现进行替换.
得到
if printf '%s\n' "$@" | grep -qF 'one.one.one.one'; then# 有参数是 包含one.one.one.one# 将 one.one.one.one 替换为 www.qualcomm.cnnew_args=()for arg in "$@"; donew_args+=("${arg//one.one.one.one/www.qualcomm.cn}")done# 如果命令是 curl 或 wget,在前面添加 real-if [[ "$cmd" == "curl" || "$cmd" == "wget" ]]; theneval "real-${cmd}" "${new_args[@]}"elseeval "$cmd" "${new_args[@]}"fihas_preset=1fi
测试一下.
cd fake-curl-wget-sh-mainsource fake-curl-wget-v2.shcdbash install-233.sh
搞定!
上传 Github
========
后记
如果你有100台有网络问题的VPS, 或者你有一些有网络问题的客户.
你把现在 /root/ 目录下的所有文件和子目录打包压缩包.

在每台VPS上解压, 执行:
unzip xxx.zipcd fake-curl-wget-sh-mainsource fake-curl-wget-v2.shcdbash install-233.sh
就行了.


评论
发表评论