向外访问网络行为次序随机的场景下 预设网络资源 预设替代命令

前言


现在我们来处理 次序随机的场景

典型例子就是 233脚本.

我们先在无预设命令的条件下, 执行一遍安装过程.
cd fake-curl-wget-sh-main
source fake-curl-wget-v2.sh
cd
bash 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=1
fi
同样的思路, 处理 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.cn
  new_args=()
  for arg in "$@"; do
      new_args+=("${arg//one.one.one.one/www.qualcomm.cn}")
  done
  # 如果命令是 curl 或 wget,在前面添加 real-
  if [[ "$cmd" == "curl" || "$cmd" == "wget" ]]; then
      eval "real-${cmd}" "${new_args[@]}"
  else
      eval "$cmd" "${new_args[@]}"
  fi
  has_preset=1
fi
测试一下.
cd fake-curl-wget-sh-main
source fake-curl-wget-v2.sh
cd
bash install-233.sh

搞定!



上传 Github


========

后记

如果你有100台有网络问题的VPS, 或者你有一些有网络问题的客户.
你把现在 /root/ 目录下的所有文件和子目录打包压缩包.


在每台VPS上解压, 执行:
unzip xxx.zip
cd fake-curl-wget-sh-main
source fake-curl-wget-v2.sh
cd
bash install-233.sh
就行了.

评论

The Hot3 in Last 30 Days

酒馆SillyTavern 玩英文角色卡 也能以中文输出 设置世界书Lorebooks

搭 Docker版 Sub-Store订阅转换专家 带 http-meta 实现 集合订阅 测延迟 排序 筛选 生成新订阅 定时任务上传Gist