- 2022-06-20更新
- 2022-02-23更新
- 参考
- 文件说明
- 下载客户端
- 初始化程序
- 配置文件
- 运行
- 其他
- 添加到快捷脚本
- 订阅相关
- 新服务器从头配置clash
- Openwrt自定义配置文件的一种方式
- 自己创建策略并配置分流
- mac使用clash
2022-06-20更新
linux的shell客户端:ShellClash
可以很简单的在服务器和openwrt等系统上布置clash.
2022-02-23更新
linux的GUI客户端:CFW有了,适合linux作为主力机的用户
wget https://github.com/Fndroid/clash_for_windows_pkg/releases/download/0.19.8/Clash.for.Windows-0.19.8-x64-linux.tar.gz
tar xzvf Clash.for.Windows-0.19.8-x64-linux.tar.gz
cd Clash\ for\ Windows-0.19.8-x64-linux/
./cfw
下面的方法适合一台服务器上运行clash,给局域网内其他机器提供代理
参考
linux环境使用clash实现网络代理访问外网
Clash For Linux自动更新订阅配置
文件说明
- 客户端,可执行程序:clash
项目地址:https://github.com/Dreamacro/clash - 配置文件:
~/.config/clash/config.yaml
里面放着clash的接口,控制参数,链接信息等 - ip数据库
~/.config/clash/Country.mmdb
启动程序后会自动下载,下载失败,终端会提示错误,复制提示的下载链接,手动下载放到~/.config/clash/config.yaml
下载客户端
下载页面,https://github.com/Dreamacro/clash/releases
wget https://github.com/Dreamacro/clash/releases/download/v1.9.0/clash-linux-amd64-v1.9.0.gz
gzip -d clash-linux-amd64-v1.9.0.gz
初始化程序
(python37) cndaqiang@girl:~/MyTools/clash$ ./clash-linux-amd64-v0.19.0
若无~/.config/clash/config.yaml
与~/.config/clash/Country.mmdb
会提示,然后自动下载
cndaqiang@GIRL clash$ ./clash-linux-amd64-v1.9.0
INFO[0000] Can't find config, create a initial config file
INFO[0000] Can't find MMDB, start download
FATA[0011] Initial configuration directory error: Can't initial MMDB: Can't download MMDB: Get "https://github-production-release-asset-2e65be.s3.amazonaws.com/231014917/281a0e00-c369-11ea-8903-79a958b78b99?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200717%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200717T124944Z&X-Amz-Expires=300&X-Amz-Signature=95c6abc781a12fad2be03e640220a1f01f67e580d60d4510b9d80e233a164fbc&X-Amz-SignedHeaders=host&actor_id=0&repo_id=231014917&response-content-disposition=attachment%3B%20filename%3DCountry.mmdb&response-content-type=application%2Foctet-stream": net/http: TLS handshake timeout
如果下载ip数据库失败,人为代理下载后放到~/.config/clash/
配置文件
编辑~/.config/clash/config.yaml
文件,买的机场也提供相应的配置文件,也可以把机场提供的订阅地址按照下面的方式生成配置文件
#http代理
port: 10091
#socks代理
socks-port: 10092
#是否允许局域网连接
allow-lan: true
#运行模式: 规则Rule,全局Global,直连Direct
mode: Global
log-level: silent
#网页管理ip和端口
external-controller: '0.0.0.0:10090'
#管理密码
secret: ''
#一堆代理
Proxy:
-
name: xxxx
type: trojan
server: xxxx
port: xxxx
password: xxxx
sni: xxx
常用配置参数
mixed-port: 10092
allow-lan: true
mode: Rule
bind-address: '192.168.192.204'
external-controller: 192.168.192.204:9090
ipv6: true
分组设置
proxy-groups:
- name: 🔰 节点选择 #组名
type: select #类型,选择
proxies: #选项
- ♻️自动选择 #其他分组
- 🎯 全球直连 #其他分组
- 公益|新加坡高速节点|H.K中转|1Gps #代理节点
- name: ♻️自动选择
type: url-test #测试url
url: http://www.gstatic.com/generate_204
interval: 300
proxies:
- 公益|新加坡高速节点|H.K中转|1Gps
规则
指定符合规则的域名采用的分组
rules:
- DOMAIN-SUFFIX,local,🎯 全球直连
- IP-CIDR,192.168.0.0/16,🎯 全球直连,no-resolve
- DOMAIN-SUFFIX,android.com,🔰 节点选择
- DOMAIN-KEYWORD,XLLiveUD,🎯 全球直连
- GEOIP,CN,🎯 全球直连
- MATCH,🐟 漏网之鱼 #其他网站选择🐟 漏网之鱼分组
规则定义
- DOMAIN-SUFFIX:域名后缀匹配
- DOMAIN:域名匹配
- DOMAIN-KEYWORD:域名关键字匹配
- IP-CIDR:IP 段匹配
- SRC-IP-CIDR:源 IP 段匹配
- GEOIP:GEOIP 数据库(国家代码)匹配
- DST-PORT:目标端口匹配
- SRC-PORT:源端口匹配
- PROCESS-NAME:源进程名匹配
- RULE-SET:Rule Provider 规则匹配
- MATCH:全匹配
规则靠前的优先级高,我们要插入自定义规则,要插在MATCH:全匹配
的前面
运行
cndaqiang@GIRL clash$ ./clash-linux-amd64-v1.9.0
浏览器添加设置的http/socks代理
其他
dashboard配置
公共dashboard
网页打开http://clash.razord.top/,选择设置,点击编辑外部控制设置旁边的蓝色ip:端口
其他的GUI管理网页也是可以的http://yacd.haishan.me/.
填入配置文件中的管理ip端口密码,连上clash
之后可以继续在这里设置端口和其他管理
这里的结果并不会保存到配置文件,就是临时生效
在代理里选择使用的服务器
私有dashboard
cd $CLASHDIR/ui
git clone git@github.com:Dreamacro/clash-dashboard.git
cd
git checkout gh-pages
可以把clash-dashboard
目录直接放到服务器的web目录,进行访问(http://mom/clash-dashboard/#/proxies),也可以用clash提供的web服务(192.168.192.204/ui)进行访问,使用clash的服务需要添加参数external-ui
external-controller: 192.168.192.204:9090
external-ui: /home/cndaqiang/soft/clash/ui/clash-dashboard
也可以用其他的dashboard:yacd
添加到快捷脚本
#启动clash
pkill -f clash-linux-amd64-v1.9.0; sleep 10; nohup $HOME/MyTools/clash/clash-linux-amd64-v1.9.0 > /tmp/clash.pid &
订阅相关
subconverter转换订阅url为clash配置文件
下载subconverter,解压,
wget https://github.com/tindy2013/subconverter/releases/download/v0.7.1/subconverter_linux64.tar.gz
tar xzvf subconverter_linux64.tar.gz
利用下面两种方式生成config.yml
,并复制到clash配置目录
cndaqiang@GIRL subconverter$ cp config.yml ~/.config/clash/config.yaml
通过http转换订阅文件
适合搭建转换服务器,供所有的机器使用
cndaqiang@GIRL subconverter$ ./subconverter
2022/02/21 Mon 21:15:44.125582 [1058 10739384][INFO] SubConverter v0.7.1 starting up..
2022/02/21 Mon 21:15:44.127224 [1058 10739384][INFO] Reading preference settings...
......
2022/02/21 Mon 21:15:44.164532 [1058 10739384][INFO] Startup completed. Serving HTTP @ http://0.0.0.0:25500
使用http获取clash配置文件, 网址规则详见README-cn.md,注意要把订阅连接转为URLEncode,示例
cndaqiang@GIRL tmp$ curl -s "http://127.0.0.1:25500/sub?target=clash&url=http%3A%2F%2Fdy.clashweb.site%2Fapi%2Fv1%2Fclient%2Fsubscribe%3Ftoken%3Dcndaqiangstoken" > config.yaml
cndaqiang@GIRL tmp$ head config.yaml
port: 7890
socks-port: 7891
allow-lan: true
mode: Rule
log-level: info
external-controller: :9090
proxies:
- {name: 日本01-CM-2.0, server: xxx.gz.cm.888022.site, port: 32224, type: ss, cipher: chacha20-ietf-poly1305, password: ec684a62-be94-47f6-820c-779e4d921234, udp: true}
...
根据URLEncode的格式也可以自己写一个
cndaqiang@GIRL tmp$ curl -s "http://127.0.0.1:25500/sub?target=clash&url="$(echo "http://dy.clashweb.site/api/v1/client/subscribe?token=cndaqiangstoken" | sed "s|/|%2F|g" | sed "s|:|%3A|g" | sed "s|?|%3F|g")
[推荐]命令行转换
修改配置文件,自定义配置类型[cndaqiang]
,url可以为文件也可以为订阅地址
cndaqiang@GIRL subconverter$ vi generate.ini
#内容如下
[cndaqiang]
path=config.yml
target=clash
ver=4
url=http://dy.clashweb.site/api/v1/client/subscribe?token=cndaqiangstoken
生成配置文件config.yml
cndaqiang@GIRL subconverter$ ./subconverter -g --artifact "cndaqiang"
#这里生成的是config.yml,配置文件时yaml
cndaqiang@GIRL subconverter$ cp config.yml ~/.config/clash/config.yaml
自定义subconverter生成的配置文件
简单粗暴就直接修改vi base/all_base.tpl
就可以
...
port: { { default(global.clash.http_port, "7890") } }
...
在vi pref.toml
中设置模板也可以
...
[[template.globals]]
key = "clash.http_port"
value = "7890"
...
有配置文件后,启动clash即可
cndaqiang@GIRL clash$ ./clash-linux-amd64-v1.8.0
INFO[0000] Start initial compatible provider 🔰 节点选择
INFO[0000] Start initial compatible provider 🛑 全球拦截
INFO[0000] Start initial compatible provider 🚫 运营劫持
1.9版本虽然报错ERRO[0000] Start DNS server error: missing port in address
,但是不影响使用
新服务器从头配置clash
cd $HOME/soft
CLASHDIR=$PWD/clash
mkdir $CLASHDIR
mkdir $CLASHDIR/bin
mkdir $CLASHDIR/log
mkdir $CLASHDIR/ui
cd $CLASHDIR
#gitee备份
version=clash-linux-amd64-v1.9.0
wget http://cndaqiang.gitee.io/packages//mirrors/clash/${version}.gz
gzip -d ${version}.gz
chmod +x $version
#生成配置文件
./$version
#初始化完成后终止
#下载subconvert
wget https://github.com/tindy2013/subconverter/releases/download/v0.7.1/subconverter_linux64.tar.gz
tar xzvf subconverter_linux64.tar.gz
cd $CLASHDIR/subconverter
cat >> generate.ini <<EOF
[cndaqiang]
path=config.yml
target=clash
ver=4
url=http://dy.clashweb.site/api/v1/client/subscribe?token=cndaqiangstoken
#当网络环境不好时,使用提前下载后放到本地的www目录临时启用也可
EOF
#
#本地dashboard可选
cd $CLASHDIR/ui
git clone git@github.com:Dreamacro/clash-dashboard.git
git checkout gh-pages
#改clash参数
vi base/all_base.tpl
#
./subconverter -g --artifact "cndaqiang"
cp $CLASHDIR/subconverter/config.yml $HOME/.config/clash/config.yaml
#执行
ln -s $CLASHDIR/$version $CLASHDIR/bin/clash
$CLASHDIR/bin/clash
#配置文件使用系统服务启动
cd $CLASHDIR/bin/
cat > restart-clash.sh <<EOF
#!/bin/bash
PIDFILE=$CLASHDIR/log/clash.pid
if [ -f \$PIDFILE ]
then
kill -9 \$(cat \$PIDFILE )
fi
#生成新的PID文件
echo \$\$ > \$PIDFILE
#新配置文件
rm -rf $CLASHDIR/subconverter/config.yml
$CLASHDIR/subconverter/subconverter -g --artifact "cndaqiang"
if [ -f $CLASHDIR/subconverter/config.yml ]
then
echo 下载$CLASHDIR/subconverter/config.yml成功
cp $CLASHDIR/subconverter/config.yml $CLASHDIR/subconverter/config.yml.bak
else
echo 下载失败,使用备份$CLASHDIRh/subconverter/config.yml.bak
cp $CLASHDIR/subconverter/config.yml.bak $CLASHDIR/subconverter/config.yml
fi
#添加自定义的规则, 如libgen走代理
line=\$(grep -rn rules $CLASHDIR/subconverter/config.yml | awk -F: '{ print \$1 }')
sed -i \${line}a'\ - DOMAIN-KEYWORD,libgen,♻️ 自动选择 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ - DOMAIN-KEYWORD,sci-hub,♻️ 自动选择 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ - DOMAIN-KEYWORD,sciencedirect,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ - DOMAIN-SUFFIX,aps.org,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ - DOMAIN-SUFFIX,webofscience.com,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ - DOMAIN-SUFFIX,iop.org,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ - DOMAIN-SUFFIX,scitation.org,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ - DOMAIN-SUFFIX,elsevier.com,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ - DOMAIN-SUFFIX,wiley.com,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ - DOMAIN-SUFFIX,acs.org,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ - DOMAIN-SUFFIX,nih.gov,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ - DOMAIN-SUFFIX,springer.com,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ - DOMAIN-SUFFIX,nature.com,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ - DOMAIN-SUFFIX,science.org,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ - DOMAIN-SUFFIX,jps.jp,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i ${line}a'\ - DOMAIN-SUFFIX,xiaomi.eu,♻️ 自动选择 ' /home/cndaqiang/soft/clash/subconverter/config.yml
diff $CLASHDIR/subconverter/config.yml $HOME/.config/clash/config.yaml
#如果两个文件一致,就直接开启clash,如果不一致就生成备份旧文件并下载替换新的文件
if [ ! "\$?" == 0 ]
then
cp $CLASHDIR/subconverter/config.yml $HOME/.config/clash/config.yaml
fi
#
#执行
$CLASHDIR/bin/clash | tee $CLASHDIR/log/clash.log
EOF
chmod +x restart-clash.sh
#终止文件
cat > stop-clash.sh <<EOF
#!/bin/bash
PIDFILE=$CLASHDIR/log/clash.pid
if [ -f \$PIDFILE ]
then
kill -9 \$(cat \$PIDFILE )
fi
EOF
chmod +x stop-clash.sh
#配置基于用户身份(把cndaqiang换成自己的用户名)的系统服务
cat > $CLASHDIR/bin/clash.service <<EOF
[Unit]
[Service]
User=cndaqiang
Group=cndaqiang
ExecStart=$CLASHDIR/bin/restart-clash.sh
ExecStop=$CLASHDIR/bin/stop-clash.sh
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
sudo cp $CLASHDIR/bin/clash.service /etc/systemd/system/clash.service
#启动服务
sudo systemctl start clash
#开机启动
sudo systemctl enable clash
#如只在zerotier的内网使用clash,在`/etc/rc.local`中添加
systemctl start clash
#计划任务,每天一点更新clash
crontab -e
0 1 * * * systemctl restart clash
Openwrt自定义配置文件的一种方式
安装软件包
opkg update
opkg install subconverter diffutils
CLASHDIR=$HOME/clash
mylocalconfig=$HOME/clash/mylocalconfig.yaml
mkdir -p $CLASHDIR
mkdir $CLASHDIR/bin
mkdir $CLASHDIR/log
ln -s /etc/openclash/clash $CLASHDIR/bin/
cp -r /etc/subconverter $CLASHDIR/subconverter
#可以适当修改clash生成参数
#vi base/all_base.tpl => mixed-port: N
#输入文件
cat > $CLASHDIR/subconverter/generate.ini <<EOF
[cndaqiang]
path=config.yml
target=clash
ver=4
url=http://dy.clashweb.site/api/v1/client/subscribe?token=cndaqiangstoken
#当网络环境不好时,使用提前下载后放到本地的www目录临时启用也可
EOF
#
#配置文件使用系统服务启动
cat > $CLASHDIR/bin/restart-clash.sh <<EOF
#!/bin/bash
PIDFILE=$CLASHDIR/log/clash.pid
if [ -f \$PIDFILE ]
then
kill -9 \$(cat \$PIDFILE )
fi
#生成新的PID文件
echo \$\$ > \$PIDFILE
#
#新配置文件
rm -rf $CLASHDIR/subconverter/config.yml
cd $CLASHDIR/subconverter/
subconverter -g --artifact "cndaqiang"
if [ -f $CLASHDIR/subconverter/config.yml ]
then
echo 下载$CLASHDIR/subconverter/config.yml成功
cp $CLASHDIR/subconverter/config.yml $CLASHDIR/subconverter/config.yml.bak
else
echo 下载失败,使用备份$CLASHDIRh/subconverter/config.yml.bak
cp $CLASHDIR/subconverter/config.yml.bak $CLASHDIR/subconverter/config.yml
fi
#
#添加自定义的规则, 如libgen走代理
line=\$(grep -rn rules $CLASHDIR/subconverter/config.yml | awk -F: '{ print \$1 }')
sed -i \${line}a'\ \ - DOMAIN-KEYWORD,libgen,♻️ 自动选择 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ \ - DOMAIN-KEYWORD,sci-hub,♻️ 自动选择 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ \ - DOMAIN-KEYWORD,sciencedirect,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ \ - DOMAIN-SUFFIX,aps.org,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ \ - DOMAIN-SUFFIX,webofscience.com,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ \ - DOMAIN-SUFFIX,iop.org,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ \ - DOMAIN-SUFFIX,scitation.org,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ \ - DOMAIN-SUFFIX,elsevier.com,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ \ - DOMAIN-SUFFIX,wiley.com,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ \ - DOMAIN-SUFFIX,acs.org,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ \ - DOMAIN-SUFFIX,nih.gov,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ \ - DOMAIN-SUFFIX,springer.com,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ \ - DOMAIN-SUFFIX,nature.com,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ \ - DOMAIN-SUFFIX,science.org,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ \ - DOMAIN-SUFFIX,jps.jp,🎯 全球直连 ' $CLASHDIR/subconverter/config.yml
sed -i \${line}a'\ \ - DOMAIN-SUFFIX,xiaomi.eu,♻️ 自动选择 ' $CLASHDIR/subconverter/config.yml
#
#创建新策略组(自动筛选节点)
sourceFile=$CLASHDIR/subconverter/config.yml
includeFile=\${sourceFile}.chat.cndaqiang.in
echo " - name: ChatGPT" > \$includeFile
hang0=\$(grep -n '自动选择' \$sourceFile | grep name | awk -F: '{ print \$1 }')
hang=\$((hang0+1))
sed -n "\${hang},\\\$p" \$sourceFile | awk '/^[[:space:]]*-/ {exit} {print}' >> \$includeFile
#筛选节点
sed -n "\${hang},\\\$p" \$sourceFile | awk '/name/ {exit} {print}' | grep -i GPT >> \$includeFile
#生成新的文件
awk -v line="\${hang0}" -v includeFile="\$includeFile" 'NR==line{system("cat " includeFile )} {print}' \$sourceFile > ${sourceFile}.tmp
mv ${sourceFile}.tmp \$sourceFile
rm \$includeFile
line=\$(grep -rn rules \$sourceFile | awk -F: '{ print \$1 }')
GPT=\$(grep -i chatgpt \$sourceFile | grep name | head -1| sed 's/[,":{}]/ /g' | awk '{ print \$3 }')
if [ \$GPT ]
then
sed -i \${line}a'\ \ - DOMAIN-KEYWORD,openai, ChatGPT ' \$sourceFile
sed -i \${line}a'\ \ - DOMAIN-KEYWORD,perplexity, ChatGPT ' \$sourceFile
fi
#
#
if [ ! -f $mylocalconfig ]; then touch $mylocalconfig;fi
diff $CLASHDIR/subconverter/config.yml $mylocalconfig
#如果两个文件不一致就生成备份旧文件并下载替换新的文件
if [ ! "\$?" == 0 ]
then
cp $CLASHDIR/subconverter/config.yml $mylocalconfig
fi
#
$CLASHDIR/bin/clash -f $mylocalconfig | tee $CLASHDIR/log/clash.log
#$CLASHDIR/bin/clash -f $mylocalconfig > $CLASHDIR/log/clash.log 2>&1 &
EOF
chmod +x $CLASHDIR/bin/restart-clash.sh
可以测试生成的文件是否可用
root@CRouter:~/clash/subconverter# /etc/openclash/clash -f config.yml
关闭文件
cat > $CLASHDIR/bin/stop-clash.sh <<EOF
#!/bin/bash
PIDFILE=$CLASHDIR/log/clash.pid
if [ -f \$PIDFILE ]
then
kill -9 \$(cat \$PIDFILE )
fi
EOF
chmod +x $CLASHDIR/bin/stop-clash.sh
如果想共享就把
mylocalconfig=/www/clashconfig/mylocalconfig.yaml
就可以从openwrt的网页下载修改后的配置了http://192.168.12.1/clashconfig/mylocalconfig.yaml
也可以复制到
/etc/openclash/config/mylocalconfig.yaml
作为openclash的输入我觉得openclash非常的卡,仅作为临时代理使用,我常用的还是/root/clash/bin/restart-clash.sh
openclash曾经使用的配置
- 此次使用OpebnClash插件,白名单模式,另外配置文件中制定的端口(subconverter的配置
base/all_base.tpl
制定),是可以走zerotier访问的,所以可以远程访问Luci>OpenClash>插件设置>定时重启
,重启时间大于build-clash-config.sh
时间,就可以实现定期更新配置
生成系统控制脚本
cat > $CLASHDIR/bin/myclash << EOF
#!/bin/sh /etc/rc.common
START=99
STOP=10
start() {
echo "Starting My Clash Service"
$CLASHDIR/bin/restart-clash.sh
# 添加启动服务的命令
}
stop() {
echo "Stopping My Clash Service"
# 添加停止服务的命令
$CLASHDIR/bin/stop-clash.sh
}
restart() {
echo "Restarting My Clash Service"
stop
start
}
# 添加其他需要的函数
# 添加其他需要的逻辑
# Exit on unsupported action
run "$@"
EOF
#
chmod +x $CLASHDIR/bin/myclash
cp $CLASHDIR/bin/myclash /etc/init.d/
添加定期启动
#0 1 * * * /root/clash/bin/restart-clash.sh
0 1 * * * /etc/init.d/myclash restart
配置dashboard
wget 'https://codeload.github.com/cndaqiang/clash-dashboard/zip/refs/heads/gh-pages'
unzip -x gh-pages
mv clash-dashboard-gh-pages /www/clash-dashboard
自己创建策略并配置分流
为了避免GPT被封号,这里添加自己的节点进行GPT访问.
sourceFile=/home/cndaqiang/soft/clash/subconverter/config.yml
#添加节点
line=$(grep -n 'proxies' $sourceFile | head -1 | awk -F: '{ print $1 }')
sed -i ${line}a'\ \ - {name: "cndaqiang.ChatGPT", server: 192.168.192.10, port: 2090, type: socks5}' $sourceFile
创建一个包含所有节点的群组
sourceFile=/home/cndaqiang/soft/clash/subconverter/config.yml
includeFile=${sourceFile}.chat.cndaqiang.in
echo " - name: 所有节点
type: select
proxies:
grep '{name:' $sourceFile | awk -F'name: ' '{print $2}' | awk -F', ' '{gsub(/"/, "", $1); print " - " $1}' >> $includeFile
不想转译了,自己添加到restart-clash.sh
#自动筛选节点
sourceFile=/home/cndaqiang/soft/clash/subconverter/config.yml
includeFile=${sourceFile}.chat.cndaqiang.in
#...............................................筛选美国节点并设置自动选择
#这是抄的“♻️自动选择”的策略,即自动测试节点的方法
echo " - name: QS_US" > $includeFile
hang0=$(grep -n '自动选择' $sourceFile | grep name | awk -F: '{ print $1 }')
hang=$((hang0+1))
sed -n "${hang},\$p" $sourceFile | awk '/^[[:space:]]*-/ {exit} {print}' >> $includeFile
#筛选节点
sed -n "${hang},\$p" $sourceFile | awk '/name/ {exit} {print}' | grep -i 美国 >> $includeFile
sed -n "${hang},\$p" $sourceFile | awk '/name/ {exit} {print}' | grep -i US >> $includeFile
#...............................................筛选GPT节点.
#添加自己的节点
echo " - name: ChatGPT
type: select
proxies:
- cndaqiang.ChatGPT" >> $includeFile
#亦可从"节点选择"中筛选其他的节点
hang0=$(grep -n '节点选择' $sourceFile | grep name | awk -F: '{ print $1 }')
hang=$((hang0+1))
sed -n "${hang},\$p" $sourceFile | awk '/name/ {exit} {print}' | grep -i GPT >> $includeFile
#..........................................................
#生成新的文件
awk -v line="${hang0}" -v includeFile="$includeFile" 'NR==line{system("cat " includeFile )} {print}' $sourceFile > .tmp
mv .tmp $sourceFile
rm $includeFile
line=$(grep -rn rules $sourceFile | awk -F: '{ print $1 }')
#.
GPT=$(grep -i chatgpt $sourceFile | grep name | head -1| sed 's/[,":{}]/ /g' | awk '{ print $3 }')
if [ $GPT ]
then
sed -i ${line}a'\ \ - DOMAIN-SUFFIX,oaistatic.com, ChatGPT ' $sourceFile
sed -i ${line}a'\ \ - DOMAIN-SUFFIX,openai.com, ChatGPT ' $sourceFile
sed -i ${line}a'\ \ - DOMAIN-SUFFIX,chatgpt.com, ChatGPT ' $sourceFile
sed -i ${line}a'\ \ - DOMAIN-SUFFIX,gravatar.com, ChatGPT ' $sourceFile
sed -i ${line}a'\ \ - DOMAIN-SUFFIX,oaistatic.com, ChatGPT ' $sourceFile
sed -i ${line}a'\ \ - DOMAIN-SUFFIX,scholar.google.com, ChatGPT ' $sourceFile
fi
# 其他网站
https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
#美国节点
sed -i ${line}a'\ \ - DOMAIN-SUFFIX,ai, QS_US ' $sourceFile
sed -i ${line}a'\ \ - DOMAIN-SUFFIX,phind.com, QS_US ' $sourceFile
sed -i ${line}a'\ \ - DOMAIN-SUFFIX,gemini.google.com, QS_US ' $sourceFile
# 其他网址
sed -i ${line}a'\ \ - DOMAIN-SUFFIX,github.com,♻️ 自动选择 ' $sourceFile
sed -i ${line}a'\ \ - DOMAIN-SUFFIX,githubusercontent.com,♻️ 自动选择 ' $sourceFile
mac使用clash
配置文件config.yaml
中设置端口, 可以覆盖节点订阅的配置
mixed-port: 7890
本文首发于我的博客@cndaqiang.
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!