update README.md

main
snakem982 6 months ago
parent 7b6ffd1eb2
commit 8f17d85e74

@ -1,214 +0,0 @@
#!/bin/bash
while getopts ":x:" opt
do
case $opt in
x)
export http_proxy=$OPTARG
export https_proxy=$http_proxy
echo "使用代理 $https_proxy"
;;
?)
echo "未知参数"
exit 1;;
esac
done
jsonQ() {
json=$(cat)
awk -v json="$json" -v json_original="$json" -v key="$1" '
function strLastChar(s) {
return substr(s, length(s), 1)
}
function startWith(s, c) {
start = substr(s, 1, 1)
return start == c
}
function endWith(s, c) {
return strLastChar(s) == c
}
function innerStr(s) {
# 取出括号/引号内的内容
return substr(s, 2, length(s)-2)
}
function strIndex(s, n) {
# 字符串通过下标取值索引是从1开始的
return substr(s, n, 1)
}
function trim(s) {
sub("^[ \n]*", "", s);
sub("[ \n]*$", "", s);
return s
}
function findValueByKey(s, k) {
if ("\""k"\"" != substr(s, 1, length(k)+2)) {exit 0}
s = trim(s)
start = 0; stop = 0; layer = 0
for (i = 2 + length(k) + 1; i <= length(s); ++i) {
lastChar = substr(s, i - 1, 1)
currChar = substr(s, i, 1)
if (start <= 0) {
if (lastChar == ":") {
start = currChar == " " ? i + 1: i
if (currChar == "{" || currChar == "[") {
layer = 1
}
}
} else {
if (currChar == "{" || currChar == "[") {
++layer
}
if (currChar == "}" || currChar == "]") {
--layer
}
if ((currChar == "," || currChar == "}" || currChar == "]") && layer <= 0) {
stop = currChar == "," ? i : i + 1 + layer
break
}
}
}
if (start <= 0 || stop <= 0 || start > length(s) || stop > length(s) || start >= stop) {
exit 0
} else {
return trim(substr(s, start, stop - start))
}
}
function unquote(s) {
if (startWith(s, "\"")) {
s = substr(s, 2, length(s)-1)
}
if (endWith(s, "\"")) {
s = substr(s, 1, length(s)-1)
}
return s
}
BEGIN{
if (match(key, /^\./) == 0) {exit 0;}
sub(/\][ ]*\[/,"].[", key)
split(key, ks, ".")
if (length(ks) == 1) {print json; exit 0}
for (j = 2; j <= length(ks); j++) {
k = ks[j]
if (startWith(k, "[") && endWith(k, "]") == 1) { # [n]
idx = innerStr(k)
currentIdx = -1
# 找匹配对
pairs = ""
json = trim(json)
if (startWith(json, "[") == 0) {
exit 0
}
start = 2
cursor = 2
for (; cursor <= length(json); cursor++) {
current = strIndex(json, cursor)
if (current == " " || current == "\n") {continue}
# 忽略空白
if (current == "[" || current == "{") {
if (length(pairs) == 0) {start = cursor}
pairs = pairs""current
}
if (current == "]" || current == "}") {
if ((strLastChar(pairs) == "[" && current == "]") || (strLastChar(pairs) == "{" && current == "}")) {
pairs = substr(pairs, 1, length(pairs)-1)
# 删掉最后一个字符
if (pairs == "") {
# 匹配到了所有的左括号
currentIdx++
if (currentIdx == idx) {
json = substr(json, start, cursor-start+1)
break
}
}
} else {
pairs = pairs""current
}
}
}
} else {
# 到这里,就只能是{"key": "value"}或{"key":{}}或{"key":[{}]}
pairs = ""
json = trim(json)
if (startWith(json, "[")) {exit 0}
#if (!startWith(json, "\"") || !startWith(json, "{")) {json="\""json}
# 找匹配的键
start = 2
cursor = 2
noMatch = 0
for (; cursor <= length(json); cursor++) {
current = strIndex(json, cursor)
if (current == " " || current == "\n" || current == ",") {continue}
# 忽略空白和逗号
if (substr(json, cursor, length(k)+2) == "\""k"\"") {
json = findValueByKey(substr(json, cursor, length(json)-cursor+1), k)
break
} else {
noMatch = 1
}
if (noMatch) {
pos = match(substr(json, cursor+1, length(json)-cursor), /[^(\\")]"/)
ck = substr(substr(json, cursor+1, length(json)-cursor), 1, pos)
t = findValueByKey(substr(json, cursor, length(json)-cursor+1), ck)
tLen = length(t)
sub(/\\/, "\\\\", t)
pos = match(substr(json, cursor+1, length(json)-cursor), t)
if (pos != 0) {
cursor = cursor + pos + tLen
}
noMatch = 0
continue
}
}
}
}
if (json_original == json) { print;exit 0 }
print unquote(json)
}'
}
month=2592000
timestamp=$(date +%s)
lastMonth=$(( timestamp-month ))
function isUpdated()
{
t1=`gdate -d "$1" +%s`
if [ $t1 -gt $lastMonth ]
then
return 0
else
return 1
fi
}
rm -rf result.log
i=1
data=$(cat ../source/nodelist.txt)
for url in $data; do
if [[ $url == https://raw.githubusercontent.com* ]]; then
i=$[$i+1]
code=$(curl -o /dev/null -k -s -w %{http_code} $url)
if [ $code -ne 404 ]
then
arr=(`echo $url | tr '/' ' '`)
repository=${arr[2]}%2F${arr[3]}
response=$(curl -s https://github.com/search?q=$repository&type=repositories)
response=$(echo "$response" | jsonQ ".payload.results.[0].repo.repository.updated_at")
response=${response: 0: 19}
response=${response/T/' '}
if isUpdated $response ; then
echo $url >> result.log
fi
fi
ix=`expr $i % 8`
if [ $ix -eq 0 ]
then
echo stop
sleep 120
fi
fi
done

@ -0,0 +1,84 @@
#!/bin/bash
# ========== 参数解析 ==========
PROXY_ARG=""
while getopts ":x:" opt; do
case $opt in
x)
# 注意去除前面的等号(比如 -x=http://... 传入时可能带=
proxy_val="${OPTARG#*=}"
if [[ -z "$proxy_val" ]]; then
proxy_val="$OPTARG"
fi
PROXY_ARG="--proxy $proxy_val"
echo "✅ 使用代理:$proxy_val"
;;
*)
echo "❌ 未知参数"
exit 1
;;
esac
done
# ========== 路径定义 ==========
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
NODELIST_FILE="$SCRIPT_DIR/../source/nodelist.txt"
RESULT_FILE="$SCRIPT_DIR/result.log"
if [ ! -f "$NODELIST_FILE" ]; then
echo "❌ 节点列表文件不存在:$NODELIST_FILE"
exit 1
fi
# ========== 时间比较函数 ==========
month=2592000
timestamp=$(date +%s)
lastMonth=$((timestamp - month))
function isUpdated() {
# macOS 可能没有 gdate优先用 date -d ,失败用 gdate -d
t1=$(date -d "$1" +%s 2>/dev/null || gdate -d "$1" +%s 2>/dev/null)
if [ -z "$t1" ]; then return 1; fi
[ "$t1" -gt "$lastMonth" ]
}
# ========== 主逻辑 ==========
rm -f "$RESULT_FILE"
i=0
while IFS= read -r url || [ -n "$url" ]; do
[[ -z "$url" || "$url" != https://raw.githubusercontent.com* ]] && continue
i=$((i + 1))
code=$(curl $PROXY_ARG -o /dev/null -k -s -w "%{http_code}" "$url")
if [ "$code" -ne 404 ]; then
repo_path=$(echo "$url" | cut -d '/' -f 4,5)
repo_api="https://api.github.com/repos/$repo_path"
response=$(curl $PROXY_ARG -s -H "User-Agent: alive-script" "$repo_api")
updated_at=$(echo "$response" | jq -r '.updated_at // empty')
if [ -n "$updated_at" ]; then
updated_at=${updated_at:0:19}
updated_at=${updated_at/T/' '}
if isUpdated "$updated_at"; then
echo "$url" >> "$RESULT_FILE"
echo "$url 最近更新:$updated_at"
else
echo "$url 超过一个月未更新:$updated_at"
fi
else
echo "⚠️ 无法获取更新时间:$repo_api"
echo "🔍 响应内容(截断):"
echo "$response" | head -n 5
fi
fi
if ((i % 8 == 0)); then
echo "⏳ 暂停 120 秒,防止限流..."
sleep 120
fi
done < "$NODELIST_FILE"
echo "✅ 扫描完成,结果已写入:$RESULT_FILE"

@ -0,0 +1,92 @@
#!/bin/bash
# ========== 参数解析 ==========
PROXY_ARG=""
while getopts ":x:" opt; do
case $opt in
x)
# 注意去除前面的等号(比如 -x=http://... 传入时可能带=
proxy_val="${OPTARG#*=}"
if [[ -z "$proxy_val" ]]; then
proxy_val="$OPTARG"
fi
PROXY_ARG="--proxy $proxy_val"
echo "✅ 使用代理:$proxy_val"
;;
*)
echo "❌ 未知参数"
exit 1
;;
esac
done
# ========== 路径定义 ==========
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
YAML_FILE="$SCRIPT_DIR/../source/webfuzz.yaml"
RESULT_FILE="$SCRIPT_DIR/result.log"
if [ ! -f "$YAML_FILE" ]; then
echo "❌ 节点列表文件不存在:$YAML_FILE"
exit 1
fi
# ========== 时间阈值定义 ==========
month=2592000
timestamp=$(date +%s)
lastMonth=$(( timestamp - month ))
# 初始化结果文件
echo "# 自动检测生成 $(date +%Y%m%d)" > "$RESULT_FILE"
# 获取 YAML 项数
count=$(yq e 'length' "$YAML_FILE")
# ========== 开始检测 ==========
for ((i = 0; i < count; i++)); do
item=$(yq e ".[$i]" "$YAML_FILE")
url=$(echo "$item" | yq e '.options.url' -)
echo "🔍 检测 URL: $url"
if [[ $url == https://raw.githubusercontent.com/* ]]; then
# 检查 URL 是否有效
code=$(curl $PROXY_ARG -o /dev/null -s -w "%{http_code}" "$url")
if [[ "$code" == "404" ]]; then
echo "❌ 文件不存在:$url"
continue
fi
# 路径解析(与 nodelist.txt 保持一致)
repo_path=$(echo "$url" | cut -d '/' -f 4,5)
repo_api="https://api.github.com/repos/$repo_path"
# 获取更新时间
response=$(curl $PROXY_ARG -s -H "User-Agent: alive-script" "$repo_api")
updated_at=$(echo "$response" | jq -r '.updated_at // empty')
if [[ -z "$updated_at" ]]; then
echo "⚠️ 无法获取更新时间:$repo_api"
continue
fi
# 是否在30天内
if date --version >/dev/null 2>&1; then
updated_ts=$(date -d "$updated_at" +%s)
else
updated_ts=$(date -j -f "%Y-%m-%dT%H:%M:%SZ" "$updated_at" +%s)
fi
if [[ $updated_ts -gt $lastMonth ]]; then
echo "- type: webfuzz" >> "$RESULT_FILE"
echo " options:" >> "$RESULT_FILE"
echo " url: $url" >> "$RESULT_FILE"
echo "" >> "$RESULT_FILE"
echo "✅ 保留:$url(更新时间:$updated_at"
else
echo "⏸️ 仓库太久未更新:$url$updated_at"
fi
else
echo "⛔ 暂不支持的 URL$url"
fi
done
echo "✅ 完成。活跃条目写入:$RESULT_FILE"

@ -1,25 +1,33 @@
https://raw.githubusercontent.com/aiboboxx/clashfree/main/clash.yml
https://raw.githubusercontent.com/anaer/Sub/main/clash.yaml
https://raw.githubusercontent.com/chengaopan/AutoMergePublicNodes/master/list.yml
https://raw.githubusercontent.com/mahdibland/V2RayAggregator/master/sub/sub_merge_yaml.yml
https://raw.githubusercontent.com/mheidari98/.proxy/main/all
https://raw.githubusercontent.com/NiceVPN123/NiceVPN/main/Clash.yaml
https://raw.githubusercontent.com/ts-sf/fly/main/clash
https://raw.githubusercontent.com/PangTouY00/Auto_proxy/main/Long_term_subscription_num
https://raw.githubusercontent.com/zhangkaiitugithub/passcro/main/speednodes.yaml
https://raw.githubusercontent.com/soroushmirzaei/telegram-configs-collector/main/protocols/hysteria
https://raw.githubusercontent.com/soroushmirzaei/telegram-configs-collector/main/protocols/vmess
https://raw.githubusercontent.com/soroushmirzaei/telegram-configs-collector/main/protocols/vless
https://raw.githubusercontent.com/soroushmirzaei/telegram-configs-collector/main/protocols/trojan
https://raw.githubusercontent.com/soroushmirzaei/telegram-configs-collector/main/protocols/shadowsocks
https://raw.githubusercontent.com/soroushmirzaei/telegram-configs-collector/main/protocols/reality
https://raw.githubusercontent.com/yebekhe/TelegramV2rayCollector/main/sub/base64/mix
https://raw.githubusercontent.com/peasoft/NoMoreWalls/master/list.yml
https://raw.githubusercontent.com/Vauth/node/main/Main
https://raw.githubusercontent.com/Vauth/node/main/Master
https://raw.githubusercontent.com/WilliamStar007/ClashX-V2Ray-TopFreeProxy/main/combine/clash.config.yaml
https://raw.githubusercontent.com/Epodonios/v2ray-configs/main/All_Configs_base64_Sub.txt
https://raw.githubusercontent.com/lagzian/SS-Collector/main/mix_clash.yaml
https://raw.githubusercontent.com/ALIILAPRO/v2rayNG-Config/main/sub.txt
https://raw.githubusercontent.com/MrMohebi/xray-proxy-grabber-telegram/master/collected-proxies/clash-meta/all.yaml
https://raw.githubusercontent.com/Misaka-blog/chromego_merge/main/sub/merged_proxies_new.yaml
# 自动检测生成 20250610
- type: webfuzz
options:
url: https://raw.githubusercontent.com/abshare/abshare.github.io/main/README.md
- type: webfuzz
options:
url: https://raw.githubusercontent.com/mksshare/mksshare.github.io/main/README.md
- type: webfuzz
options:
url: https://raw.githubusercontent.com/peasoft/NoMoreWalls/master/list_raw.txt
- type: webfuzz
options:
url: https://raw.githubusercontent.com/yaney01/Yaney01/main/README.md
- type: webfuzz
options:
url: https://raw.githubusercontent.com/HakurouKen/free-node/main/public
- type: webfuzz
options:
url: https://raw.githubusercontent.com/MrMohebi/xray-proxy-grabber-telegram/master/collected-proxies/row-url/actives.txt
- type: webfuzz
options:
url: https://raw.githubusercontent.com/shabane/kamaji/master/hub/merged.txt
- type: webfuzz
options:
url: https://raw.githubusercontent.com/markbang/chromegopacs/main/hy2pac.txt

@ -13,12 +13,8 @@ https://raw.githubusercontent.com/soroushmirzaei/telegram-configs-collector/main
https://raw.githubusercontent.com/soroushmirzaei/telegram-configs-collector/main/protocols/trojan
https://raw.githubusercontent.com/soroushmirzaei/telegram-configs-collector/main/protocols/shadowsocks
https://raw.githubusercontent.com/soroushmirzaei/telegram-configs-collector/main/protocols/reality
https://raw.githubusercontent.com/yebekhe/TelegramV2rayCollector/main/sub/base64/mix
https://raw.githubusercontent.com/peasoft/NoMoreWalls/master/list.yml
https://raw.githubusercontent.com/Vauth/node/main/Main
https://raw.githubusercontent.com/Vauth/node/main/Master
https://raw.githubusercontent.com/WilliamStar007/ClashX-V2Ray-TopFreeProxy/main/combine/clash.config.yaml
https://raw.githubusercontent.com/Epodonios/v2ray-configs/main/All_Configs_base64_Sub.txt
https://raw.githubusercontent.com/lagzian/SS-Collector/main/mix_clash.yaml
https://raw.githubusercontent.com/ALIILAPRO/v2rayNG-Config/main/sub.txt
https://raw.githubusercontent.com/MrMohebi/xray-proxy-grabber-telegram/master/collected-proxies/clash-meta/all.yaml

@ -1,13 +1,7 @@
http://141.147.161.50:12580/clash/proxies
http://150.230.195.209:12580/clash/proxies
http://155.248.172.106:12580/clash/proxies
http://174.137.58.32:12580/clash/proxies
http://175.178.182.178:12580/clash/proxies
http://66.42.50.118:12580/clash/proxies
http://104.168.244.47:12580/clash/proxies
http://beetle.lander.work/clash/proxies
https://clashe.eu.org/clash/proxies
https://proxy.crazygeeky.com/clash/proxies
https://proxy.fldhhhhhh.top/clash/proxies
https://proxypool.link/clash/proxies
https://proxypool1999.banyunxiaoxi.icu/clash/proxies

@ -1,4 +1,4 @@
# 20230708
# 自动检测生成 20250610
- type: webfuzz
options:
url: https://raw.githubusercontent.com/abshare/abshare.github.io/main/README.md
@ -7,10 +7,6 @@
options:
url: https://raw.githubusercontent.com/mksshare/mksshare.github.io/main/README.md
- type: webfuzzsub
options:
url: https://raw.githubusercontent.com/WilliamStar007/ClashX-V2Ray-TopFreeProxy/main/README.md
- type: webfuzz
options:
url: https://raw.githubusercontent.com/peasoft/NoMoreWalls/master/list_raw.txt
@ -19,32 +15,18 @@
options:
url: https://raw.githubusercontent.com/yaney01/Yaney01/main/README.md
# 20230729
- type: webfuzz
options:
url: https://raw.githubusercontent.com/HakurouKen/free-node/main/public
# 20230813
- type: webfuzz
options:
url: https://raw.githubusercontent.com/MrMohebi/xray-proxy-grabber-telegram/master/collected-proxies/row-url/actives.txt
# 20230909
- type: webfuzz
options:
url: https://raw.githubusercontent.com/shabane/kamaji/master/hub/merged.txt
# 20231108
- type: webfuzz
options:
url: https://raw.githubusercontent.com/barry-far/V2ray-Configs/main/All_Configs_Sub.txt
# 20240218
- type: webfuzz
options:
url: https://raw.githubusercontent.com/markbang/chromegopacs/main/hy2pac.txt
# 20240415
- type: webfuzz
options:
url: https://raw.githubusercontent.com/imohammadkhalili/V2RAY/main/Mkhalili
url: https://raw.githubusercontent.com/markbang/chromegopacs/main/hy2pac.txt
Loading…
Cancel
Save