Автообход: при равном итоге остаётся применённая стратегия, документ «Как работает автообход»

- Фоновое сравнение при равном итоге переключало на стратегию, которая шла в списке первой:
  на тестовом роутере v4 и v7 сошлись на 137, подбор ставил v7, видел, что сервисов
  открывается меньше, и возвращал v4. Теперь при равенстве применённая остаётся.
- Российская колония: выход у неё внутри страны, за теми же ТСПУ, — через неё не
  снимается ни геоблок, ни остальные блокировки. Так и сказано в журнале.
- docs/autobypass.md — как устроен автообход: порядок подбора, перебор стратегий и счёт,
  сравнение близких, выбор колоний WARP, списки, ИИ-сервисы, мост Telegram, ограничения.
This commit is contained in:
xyzmean committed 2026-09-24 01:44:48 +03:00
1 parent 9d2114806e
commit 3f5aed3ffa
2 files changed
+721 -7

No files matched your search

+13 -7
View File
@@ -4848,7 +4848,8 @@ ST_CRON_CMD="/etc/init.d/steer enabled && { for i in zmwarp zmwarp2 zmwarp3; do
# на трёх устройствах Cloudflare считает одним клиентом.
ST_WARP_N=3
ST_WARP_UP="$ST_DIR/warp.up" # поднятые туннели «интерфейс колония», лучший первым
# Российские колонии Cloudflare: туннель через них геоблок не снимает, берутся только в запас.
# Российские колонии Cloudflare: выход у них внутри страны, за теми же ТСПУ, что и без туннеля, —
# через них не снимается ни геоблок, ни остальные блокировки. Берутся только в запас.
ST_RU_COLOS="DME SVX LED KJA REN OVB KZN AER VVO"
# Что выбрать при первой установке, если ничего не выбрано: ИИ-сервисы закрывает геоблок,
# и кроме туннеля им ничего не поможет.
@@ -5297,7 +5298,7 @@ _st_warp_scan() { # ИНТЕРФЕЙС КЛЮЧ_УЗЛА ЗАНЯТЫЕ_КОЛО
pick=$(awk '{ printf "%d\t%s %s %s\n", $1 * 100000 + $2, $3, $4, $5 }' "$f" | sort -n | head -n1 | cut -f2)
case "$f" in
*.same) echo " другой колонии нет — та же, но через другой адрес" >&2 ;;
*.ru) echo " наружных колоний нет — беру российскую (геоблок она не снимает)" >&2 ;;
*.ru) echo " наружных колоний нет — беру российскую: блокировки через неё не снимаются" >&2 ;;
*.notls) echo "!! ни через одну точку не проходит HTTPS — беру лучшую из оставшихся" >&2 ;;
esac
echo "$pick"
@@ -5412,7 +5413,7 @@ _st_warp_up() { # [repick]
fi
echo "$colos" > "$ST_DIR/warp.colo"
_st_tgws_warp
[ "$ru" = 1 ] && _rb_warn "Часть туннелей WARP идёт через российские колонии: ИИ-сервисы через них не откроются"
[ "$ru" = 1 ] && _rb_warn "Часть туннелей WARP идёт через российские колонии: заблокированное через них не откроется"
return 0
}
@@ -6592,7 +6593,7 @@ do_redbtn_deep() { # ПРИМЕНЁННАЯ
[ -s "$RB_RUN/deep.res" ] && [ -s "$RB_RUN/deep.cand" ] || return 0
sum="$(md5sum "$CONF" | cut -d' ' -f1)"
RB_PROBE_DOH="$(_rb_doh_pick)"
win="$(_rb_zt_deep_pick "$RB_RUN/deep.res")"
win="$(_rb_zt_deep_pick "$RB_RUN/deep.res" "$cur")"
rm -f "$RB_RUN/deep.res" "$RB_RUN/deep.cand"
[ -n "$win" ] && [ "$win" != "$cur" ] || { echo "Оставляем $cur"; return 0; }
# За это время настройку могли сменить руками или тестером — тогда чужое не трогаем.
@@ -6642,8 +6643,8 @@ _rb_zt_ties() { # ФАЙЛ_РЕЗУЛЬТАТОВ -> имена, по строк
# счёт — узлы CDN, до которых дошёл поток, — и итоговый счёт = основной + дополнительный.
# Печатает имя победителя по итоговому (или первой, если проверить не удалось). Первая —
# применённая: другая побеждает, только набрав строго больше.
_rb_zt_deep_pick() { # ФАЙЛ_РЕЗУЛЬТАТОВ
local res="$1" best key ties n name blk="$RB_RUN/zt.dblock" tgt="$RB_RUN/zt.deep" r sc main tot top=-1 win
_rb_zt_deep_pick() { # ФАЙЛ_РЕЗУЛЬТАТОВ [ПРИМЕНЁННАЯ]
local res="$1" cur="${2:-}" best key ties n name blk="$RB_RUN/zt.dblock" tgt="$RB_RUN/zt.deep" r sc main tot top=-1 win
best=$(tail -n +2 "$res" | head -n1)
win="${best%% → *}"
ties="$(_rb_zt_ties "$res")"
@@ -6663,7 +6664,12 @@ _rb_zt_deep_pick() { # ФАЙЛ_РЕЗУЛЬТАТОВ
main=$(awk -v n="$name" 'NR > 1 { m = $0; sub(/ → .*/, "", m); if (m == n) { sub(/^.* → /, ""); split($0, a, "/"); print a[1]; exit } }' "$res")
tot=$(( ${main:-0} + sc ))
echo " основной ${main:-0} + дополнительный $sc из ${r#* } = $tot" >&2
[ "$tot" -gt "$top" ] && { top="$tot"; win="$name"; }
# При равном итоге остаётся применённая: переключение ради той же суммы — лишний
# перезапуск обхода (на тестовом роутере v4 и v7 сошлись на 137, и сравнение
# переключало на v7 только потому, что та шла в списке первой).
if [ "$tot" -gt "$top" ] || { [ "$tot" -eq "$top" ] && [ "$name" = "$cur" ]; }; then
top="$tot"; win="$name"
fi
done < "$RB_RUN/zt.ties"
_rb_zt_down
rm -f "$RB_RUN/zt.ties" "$blk" "$tgt"