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

前言

上一篇 我们实现了 向外访问网络时暂停 使用者进行替代操作

对于这种向外访问网络行为次序固定的场景下 

我们可以预设网络资源 预设替代命令


预设网络资源

刚好利用上一篇我们操作过的环境.

* 如果你是从头来的话, 基本上就是把上一篇教程操作一遍.


预设替代命令

打开上一篇的操作日志.

参考上一篇操作过程中我们输入的替代命令, 设置到 __fake_net_common.sh 中
如, 序号 1

序号 3

序号 5 
我们遇到了一个随机字符的问题, 不能写死预设命令. 我们可以用指定第几个参数的方法.
问问GPT
分析下面这样的命令
curl -L -q --retry 5 --retry-delay 10 --retry-max-time 60 -x '' -sSfLo /tmp/tmp.eNF5Sld6Wm -H Accept:\ application/vnd.github.v3+json https://api.github.com/repos/XTLS/Xray-core/releases/latest 
"$cmd" 是 curl
"$@" 是curl后面所有的参数
我需要用指定第几个参数的方法 提取其中的 /tmp/tmp.eNF5Sld6Wm
GPT帮我数了数, 用 "${13}" 的方法引用.

__fake_net_common.sh 修改完后.
试试
source fake-curl-wget-v2.sh
bash install.sh
有问题, 会卡死.

检查了一下, 是因为在 case 1) 的里面写了 curl. 这里并没有使用系统原本的curl, 而是调用了假的curl.
我们借用之前的经验. 
先去掉假的PATH, 执行curl之后, 再恢复假的PATH.

再试试
source fake-curl-wget-v2.sh
bash install.sh
还是有问题. 在 cp /root/xxx  yyy 的部分, 报错非法参数.

那我们就把参数 echo 出来.

再根据日志的打印, 对比 curl 原始命令的参数列表, 发现应该用 "${12}"

用这种方式调试完, 就正常了.


小优化

在 /tmp/fakebin/ 下面保存 real-curl 和 real-wget, 用来调用真正的系统 curl 和 wget
内容很简单, 就是
/usr/bin/curl "$@"
/usr/bin/wget "$@"

上传 Github

https://github.com/crazypeace/fake-curl-wget-sh

========

后记

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

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

评论

The Hot3 in Last 30 Days

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

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