Compare commits

..
12 Commits
Author SHA1 Message Date
Flowseal 865da4f4c3 Bump version 2026-09-20 11:45:41 +03:00
Flowseal 90dd16723a Update README.md 2026-09-20 11:45:17 +03:00
Yevgeny Kungurov 3ffb2a813c Update README.md (#16876) 2026-09-20 11:37:20 +03:00
Funsy 804978f73f fix: OneDrive check (#17033) 2026-09-20 11:32:29 +03:00
Funsy 96d3cb4a1b feat: new www.sferum.ru tls fake (#17063) 2026-09-20 11:31:29 +03:00
Yevgeny Kungurov 344e8a6661 service.bat: make curl fail in case of errors (#17232) 2026-09-20 11:29:14 +03:00
Yevgeny Kungurov eebc6b1358 Update list-google.txt (#17272) 2026-09-20 11:28:03 +03:00
klaymm a1552cb1a9 Исправление завершения тестирования (#17329) 2026-09-20 11:22:57 +03:00
Flowseal ffec6c8c22 hosts update 2026-09-20 11:19:55 +03:00
Flowseal 23849617df GameFilter ports selection 2026-09-20 11:19:30 +03:00
lxstwxrden 6cec828910 Исправление загрузок и прочего с Github (IPv4 + IPv6) (#17088)
* Github IPv6 Адреса

* Update hosts

* Обновил под IPv4
2026-08-30 23:32:38 +03:00
Flowseal fb32282c55 steam exclude domains #17016 2026-08-26 03:17:12 +03:00
8 changed files with 230 additions and 68 deletions

No files matched your search

+37 -6
View File
@@ -1,9 +1,40 @@
185.199.109.133 objects.githubusercontent.com
185.199.109.133 raw.githubusercontent.com
185.199.109.133 release-assets.githubusercontent.com
185.199.108.133 private-user-images.githubusercontent.com
185.199.108.133 gist.githubusercontent.com
185.199.108.133 avatars.githubusercontent.com
140.82.121.3 github.com
146.75.22.132 objects.githubusercontent.com
146.75.22.132 raw.githubusercontent.com
146.75.22.132 release-assets.githubusercontent.com
146.75.22.132 private-user-images.githubusercontent.com
146.75.22.132 gist.githubusercontent.com
146.75.22.132 avatars.githubusercontent.com
146.75.22.132 media.githubusercontent.com
146.75.22.132 avatars0.githubusercontent.com
146.75.22.132 avatars1.githubusercontent.com
146.75.22.132 avatars2.githubusercontent.com
146.75.22.132 avatars3.githubusercontent.com
146.75.22.132 avatars4.githubusercontent.com
146.75.22.132 avatars5.githubusercontent.com
146.75.22.132 avatars6.githubusercontent.com
146.75.22.132 avatars7.githubusercontent.com
146.75.22.132 avatars8.githubusercontent.com
146.75.22.132 camo.githubusercontent.com
146.75.22.132 cloud.githubusercontent.com
2606:50c0:8000::154 objects.githubusercontent.com
2606:50c0:8000::154 raw.githubusercontent.com
2606:50c0:8000::154 release-assets.githubusercontent.com
2606:50c0:8000::154 private-user-images.githubusercontent.com
2606:50c0:8000::154 gist.githubusercontent.com
2606:50c0:8000::154 avatars.githubusercontent.com
2606:50c0:8000::154 media.githubusercontent.com
2606:50c0:8000::154 avatars0.githubusercontent.com
2606:50c0:8000::154 avatars1.githubusercontent.com
2606:50c0:8000::154 avatars2.githubusercontent.com
2606:50c0:8000::154 avatars3.githubusercontent.com
2606:50c0:8000::154 avatars4.githubusercontent.com
2606:50c0:8000::154 avatars5.githubusercontent.com
2606:50c0:8000::154 avatars6.githubusercontent.com
2606:50c0:8000::154 avatars7.githubusercontent.com
2606:50c0:8000::154 avatars8.githubusercontent.com
2606:50c0:8000::154 camo.githubusercontent.com
2606:50c0:8000::154 cloud.githubusercontent.com
149.154.167.220 my.telegram.org
149.154.167.220 desktop.telegram.org
+1 -1
View File
@@ -1 +1 @@
1.10.2
1.10.3
+10 -4
View File
@@ -13,6 +13,11 @@
> Я не веду никакие другие страницы/группы в телеграм/ютуб каналы
> Если вы наткнулись на что-то вне этой страницы гитхаба, что распространяется от моего лица - **ФЕЙК**.
> [!IMPORTANT]
> Все исполняемые и системные файлы в папке [`bin`](./bin) взяты из [zapret-win-bundle/zapret-winws](https://github.com/bol-van/zapret-win-bundle/tree/master/zapret-winws) и [zapret/releases](https://github.com/bol-van/zapret/releases). Вы можете это проверить с помощью хэшей/контрольных сумм.
>
> #### Проверяйте, что запускаете, используя сборки из интернета, и не используйте Яндекс Поиск! Он часто предлагает вредоносы по первым ссылкам, а настоящий репозиторий скрыт.
> [!WARNING]
>
> ### АНТИВИРУСЫ
@@ -26,9 +31,6 @@
>
> Добавьте папку с запретом в исключения антивируса, либо отключите детектирование PUA (потенциально нежелательных приложений). Например, в касперском есть галочка "Обнаруживать легальные приложения, которые злоумышленники часто используют для нанесения вреда". При аккуратной и правильной настройке исключений - рекомендуется настроить исключение, но если вы не до конца понимаете что делаете - рекомендуется отключить детект PUA.
> [!IMPORTANT]
> Все бинарные файлы в папке [`bin`](./bin) взяты из [zapret-win-bundle/zapret-winws](https://github.com/bol-van/zapret-win-bundle/tree/master/zapret-winws) и [zapret/releases](https://github.com/bol-van/zapret/releases). Вы можете это проверить с помощью хэшей/контрольных сумм. Проверяйте, что запускаете, используя сборки из интернета!
## ⚙️Использование
1. Включите Безопасный DNS (Secure DNS)
@@ -44,6 +46,8 @@
4. Распакуйте содержимое архива по пути, который не содержит кириллицу/спец. символы
5. Запустите нужный файл
* Узнать рабочую стратегию: **`service.bat`** -> `Run Tests` -> `Standard tests` -> `All configs`
* Поставить на автозапуск: **`service.bat`** -> `Install Service` -> *Выбираете подходящую стратегию*
## ℹ️Краткие описания файлов
@@ -97,13 +101,15 @@
- Перезагрузите компьютер
### Не работает телеграм (веб версия) или бесконечное "подключение" к голосовому чату Discord
### Не работает телеграм (веб версия)
Запустите **`service.bat`**, выберите пункт **`Update hosts file`**. После чего, если ваш hosts будет неактуальным, то Вам будет предложено обновить его самостоятельно:
- Скопируйте весь текст из открывшегося блокнота
- Откройте файл `hosts` в появившейся папке с помощью текстового редактора, открытого от имени администратора
- Добавьте в конец файла `hosts` то, что скопировали (или замените, если до этого Вы уже добавляли подобное)
- Сохраните и перепроверьте подключение. Если не работает - убедитесь, что файл `hosts` действительно сохранился.
#### Работа не гарантирована. Если не помогло - используйте [Desktop версию](https://github.com/telegramdesktop/tdesktop/releases) с [локальным прокси](https://github.com/Flowseal/tg-ws-proxy) или любыми публичными.
### Обход не работает / перестал работать
> [!IMPORTANT]
Binary file not shown.
+2 -1
View File
@@ -1,7 +1,8 @@
pusher.com
twitch.tv
api.steampowered.com
steampowered.com
steamcommunity.com
steamusercontent.com
nvidia.com
msi.com
marketplace.visualstudio.com
+2
View File
@@ -17,4 +17,6 @@ yt-video-upload.l.google.com
ytimg.com
ytimg.l.google.com
play.google.com
fonts.googleapis.com
www.gstatic.com
google.ru
+140 -43
View File
@@ -1,5 +1,5 @@
@echo off
set "LOCAL_VERSION=1.10.2"
set "LOCAL_VERSION=1.10.3"
:: External commands
if "%~1"=="status_zapret" (
@@ -532,10 +532,14 @@ if !errorlevel!==0 (
echo:
:: OneDrive
echo %~dp0\ | findstr /I /C:"%OneDrive%\\" > nul
if !errorlevel!==0 (
if defined OneDrive (
echo %~dp0\ | findstr /I /C:"%OneDrive%\\" > nul
if !errorlevel!==0 (
call :PrintRed "[X] Zapret is installed in a OneDrive folder"
call :PrintRed "If bypass doesn't work, try to move Zapret to another directory, for example in C:\zapret"
) else (
call :PrintGreen "OneDrive check passed"
)
) else (
call :PrintGreen "OneDrive check passed"
)
@@ -731,35 +735,51 @@ goto menu
chcp 437 > nul
set "gameFlagFile=%~dp0utils\game_filter.enabled"
set "GameFilterMode=disabled"
set "GameFilterTCPRange=1024-65535"
set "GameFilterUDPRange=1024-65535"
set "GameFilterStatus=disabled"
set "GameFilter=12"
set "GameFilterTCP=12"
set "GameFilterUDP=12"
if not exist "%gameFlagFile%" (
set "GameFilterStatus=disabled"
set "GameFilter=12"
set "GameFilterTCP=12"
set "GameFilterUDP=12"
exit /b
if not exist "%gameFlagFile%" exit /b
set "GameFilterTCPCandidate="
set "GameFilterUDPCandidate="
for /f "usebackq tokens=1,* delims==" %%A in ("%gameFlagFile%") do (
if /i "%%A"=="mode" set "GameFilterMode=%%B"
if /i "%%A"=="all" set "GameFilterMode=all"
if /i "%%A"=="udp" (
if "%%B"=="" (set "GameFilterMode=udp") else set "GameFilterUDPCandidate=%%B"
)
if /i "%%A"=="tcp" (
if "%%B"=="" (set "GameFilterMode=tcp") else set "GameFilterTCPCandidate=%%B"
)
)
set "GameFilterMode="
for /f "usebackq delims=" %%A in ("%gameFlagFile%") do (
if not defined GameFilterMode set "GameFilterMode=%%A"
)
call :validate_game_filter_range "%GameFilterTCPCandidate%"
if defined ValidatedGameFilterRange set "GameFilterTCPRange=%ValidatedGameFilterRange%"
call :validate_game_filter_range "%GameFilterUDPCandidate%"
if defined ValidatedGameFilterRange set "GameFilterUDPRange=%ValidatedGameFilterRange%"
if /i "%GameFilterMode%"=="all" (
set "GameFilterStatus=enabled (TCP and UDP)"
set "GameFilter=1024-65535"
set "GameFilterTCP=1024-65535"
set "GameFilterUDP=1024-65535"
set "GameFilter=%GameFilterTCPRange%"
set "GameFilterTCP=%GameFilterTCPRange%"
set "GameFilterUDP=%GameFilterUDPRange%"
) else if /i "%GameFilterMode%"=="tcp" (
set "GameFilterStatus=enabled (TCP)"
set "GameFilter=1024-65535"
set "GameFilterTCP=1024-65535"
set "GameFilter=%GameFilterTCPRange%"
set "GameFilterTCP=%GameFilterTCPRange%"
set "GameFilterUDP=12"
) else (
) else if /i "%GameFilterMode%"=="udp" (
set "GameFilterStatus=enabled (UDP)"
set "GameFilter=1024-65535"
set "GameFilter=%GameFilterUDPRange%"
set "GameFilterTCP=12"
set "GameFilterUDP=1024-65535"
set "GameFilterUDP=%GameFilterUDPRange%"
) else (
set "GameFilterMode=disabled"
)
exit /b
@@ -767,38 +787,115 @@ exit /b
:game_switch
chcp 437 > nul
cls
call :game_switch_status
echo Select game filter mode:
echo 0. Disable
echo 1. TCP and UDP
echo 2. TCP only
echo 3. UDP only
echo Select game filter option:
if "%GameFilterMode%"=="disabled" (echo 1. * Disable) else echo 1. Disable
if "%GameFilterMode%"=="all" (echo 2. * TCP and UDP) else echo 2. TCP and UDP
if "%GameFilterMode%"=="tcp" (echo 3. * TCP) else echo 3. TCP
if "%GameFilterMode%"=="udp" (echo 4. * UDP) else echo 4. UDP
echo.
echo 5. Change TCP port range (current: %GameFilterTCPRange%)
echo 6. Change UDP port range (current: %GameFilterUDPRange%)
echo 7. Change TCP and UDP port ranges
echo.
echo. 0. Exit
echo.
set "GameFilterChoice=0"
set /p "GameFilterChoice=Select option (0-3, default: 0): "
set /p "GameFilterChoice=Select option (0-7, default: 0): "
if "%GameFilterChoice%"=="" set "GameFilterChoice=0"
if "%GameFilterChoice%"=="0" (
if exist "%gameFlagFile%" (
del /f /q "%gameFlagFile%"
) else (
goto menu
)
) else if "%GameFilterChoice%"=="1" (
echo all>"%gameFlagFile%"
if "%GameFilterChoice%"=="1" (
set "GameFilterMode=disabled"
) else if "%GameFilterChoice%"=="2" (
echo tcp>"%gameFlagFile%"
set "GameFilterMode=all"
) else if "%GameFilterChoice%"=="3" (
echo udp>"%gameFlagFile%"
set "GameFilterMode=tcp"
) else if "%GameFilterChoice%"=="4" (
set "GameFilterMode=udp"
) else if "%GameFilterChoice%"=="5" (
call :change_game_filter_range tcp
) else if "%GameFilterChoice%"=="6" (
call :change_game_filter_range udp
) else if "%GameFilterChoice%"=="7" (
call :change_game_filter_range all
) else (
echo Invalid choice, exiting...
pause
goto menu
)
echo.
call :save_game_filter_settings
call :PrintYellow "Restart the zapret to apply the changes"
pause
goto menu
goto game_switch
:change_game_filter_range
set "GameFilterRangeInput="
echo.
echo Changing ports for %~1 (example: 1024-1934,1936-65535, default: 1024-65535)
set /p "GameFilterRangeInput=Enter ports/ranges: "
call :validate_game_filter_range "%GameFilterRangeInput%"
if not defined ValidatedGameFilterRange (
call :PrintRed "Invalid input. Please enter valid ports/ranges."
pause
goto game_switch
)
if /i "%~1"=="tcp" set "GameFilterTCPRange=%ValidatedGameFilterRange%"
if /i "%~1"=="udp" set "GameFilterUDPRange=%ValidatedGameFilterRange%"
if /i "%~1"=="all" (
set "GameFilterTCPRange=%ValidatedGameFilterRange%"
set "GameFilterUDPRange=%ValidatedGameFilterRange%"
)
exit /b
:validate_game_filter_range
set "ValidatedGameFilterRange="
setlocal EnableDelayedExpansion
set "GameFilterRangeToValidate=%~1"
set "GameFilterRangeToValidate=!GameFilterRangeToValidate: =!"
if not defined GameFilterRangeToValidate exit /b
for %%A in ("!GameFilterRangeToValidate:,=" "!") do (
call :gf_validate_item "%%~A"
if not defined GameFilterRangeItemValid exit /b
)
endlocal & set "ValidatedGameFilterRange=%GameFilterRangeToValidate%"
exit /b
:gf_validate_item
set "GameFilterRangeItemValid="
setlocal EnableDelayedExpansion
set "GameFilterRangeItem=%~1"
echo(!GameFilterRangeItem!| findstr /r /x /c:"[1-9][0-9]*" /c:"[1-9][0-9]*-[1-9][0-9]*" > nul || exit /b
for /f "tokens=1,2 delims=-" %%A in ("!GameFilterRangeItem!") do (
set "GameFilterRangeStart=%%A"
set "GameFilterRangeEnd=%%B"
)
if not defined GameFilterRangeEnd set "GameFilterRangeEnd=!GameFilterRangeStart!"
if not "!GameFilterRangeStart:~5,1!"=="" exit /b
if not "!GameFilterRangeEnd:~5,1!"=="" exit /b
set /a GameFilterRangeStartNumber=GameFilterRangeStart, GameFilterRangeEndNumber=GameFilterRangeEnd
if !GameFilterRangeStartNumber! gtr 65535 exit /b
if !GameFilterRangeEndNumber! gtr 65535 exit /b
if !GameFilterRangeStartNumber! gtr !GameFilterRangeEndNumber! exit /b
endlocal & set "GameFilterRangeItemValid=1"
exit /b
:save_game_filter_settings
>"%gameFlagFile%" (
echo mode=%GameFilterMode%
echo tcp=%GameFilterTCPRange%
echo udp=%GameFilterUDPRange%
)
exit /b
:: CHECK UPDATES SWITCH =================
@@ -1023,9 +1120,9 @@ echo Updating ipset-all...
if exist "%SystemRoot%\System32\curl.exe" (
curl --version | find "libcurl/7"
if !errorlevel!==0 (
curl --ssl-no-revoke -L -o "%listFile%" "%url%"
curl --ssl-no-revoke -L -f -o "%listFile%" "%url%"
) else (
curl --ssl-revoke-best-effort -L -o "%listFile%" "%url%"
curl --ssl-revoke-best-effort -L -f -o "%listFile%" "%url%"
)
) else (
powershell -NoProfile -Command ^
@@ -1059,7 +1156,7 @@ set "requestUrl=%hostsUrl%?t=%cacheBuster%"
echo Checking hosts file...
if exist "%SystemRoot%\System32\curl.exe" (
curl -L -s -o "%tempFile%" "%requestUrl%"
curl -L -s -f -o "%tempFile%" "%requestUrl%"
) else (
powershell -NoProfile -Command ^
"$url = '%requestUrl%';" ^
+38 -13
View File
@@ -49,12 +49,28 @@ function Set-IpsetMode {
}
}
# Pause that tolerates stray keystrokes and non-interactive hosts.
# Tests run for minutes, so any key pressed meanwhile stays in the console
# input buffer and would be swallowed instantly by a bare ReadKey.
function Wait-AnyKey {
param([string]$message = "Press any key to close...")
Write-Host $message -ForegroundColor Yellow
try {
while ([System.Console]::KeyAvailable) { [void][System.Console]::ReadKey($true) }
[void][System.Console]::ReadKey($true)
} catch {
# No interactive console (stdin redirected): ReadKey throws here
[void](Read-Host)
}
}
trap {
Write-Host "[ERROR] Script interrupted. Restoring ipset..." -ForegroundColor Red
if ($originalIpsetStatus -and $originalIpsetStatus -ne "any") {
Set-IpsetMode -mode "restore"
}
Remove-Item -Path $ipsetFlagFile -ErrorAction SilentlyContinue
Wait-AnyKey
break
}
@@ -382,8 +398,7 @@ if (Test-ZapretServiceConflict) {
if ($hasErrors) {
Write-Host ""
Write-Host "Fix the errors above and rerun." -ForegroundColor Yellow
Write-Host "Press any key to exit..." -ForegroundColor Yellow
[void][System.Console]::ReadKey($true)
Wait-AnyKey -message "Press any key to exit..."
exit 1
}
@@ -566,8 +581,7 @@ if ($testType -eq 'standard') {
# Ensure we have configs to run
if (-not $batFiles -or $batFiles.Count -eq 0) {
Write-Host "[ERROR] No general*.bat files found" -ForegroundColor Red
Write-Host "Press any key to exit..." -ForegroundColor Yellow
[void][System.Console]::ReadKey($true)
Wait-AnyKey -message "Press any key to exit..."
exit 1
}
@@ -602,17 +616,29 @@ function Restore-WinwsSnapshot {
if ($current -and $current -contains $p.CommandLine) { continue }
$exe = $p.ExecutablePath
$processArgs = ""
if ($p.CommandLine) {
$quotedExe = '"' + $exe + '"'
if ($p.CommandLine.StartsWith($quotedExe)) {
$processArgs = $p.CommandLine.Substring($quotedExe.Length).Trim()
} elseif ($p.CommandLine.StartsWith($exe)) {
# Split the program token off the command line to recover the arguments.
# A quoted token is unambiguous; an unquoted one may contain spaces, so
# fall back to the known executable path before guessing at whitespace.
$processArgs = $null
if ($p.CommandLine -match '^\s*"[^"]*"\s*(.*)$') {
$processArgs = $matches[1].Trim()
} elseif ($p.CommandLine -and $p.CommandLine.StartsWith($exe, [StringComparison]::OrdinalIgnoreCase)) {
$processArgs = $p.CommandLine.Substring($exe.Length).Trim()
}
} elseif ($p.CommandLine -match '^\s*\S+\s*(.*)$') {
$processArgs = $matches[1].Trim()
}
if (-not $processArgs) {
Write-Host "[WARN] Could not read arguments of previous winws instance ($exe); skipping restore." -ForegroundColor Yellow
continue
}
try {
Start-Process -FilePath $exe -ArgumentList $processArgs -WorkingDirectory (Split-Path $exe -Parent) -WindowStyle Minimized | Out-Null
} catch {
Write-Host "[WARN] Failed to restore previous winws instance ($exe): $_" -ForegroundColor Yellow
}
}
}
@@ -989,7 +1015,6 @@ try {
Remove-Item -Path $ipsetFlagFile -ErrorAction SilentlyContinue
}
Write-Host "Press any key to close..." -ForegroundColor Yellow
[void][System.Console]::ReadKey($true)
Wait-AnyKey
exit
}