А что именно он не пробил? Может у вас тоже там блок по IP? И там 10 серверов должно быть, вообще-то, куда еще 1 потерялся? В логе есть ваш GGC?
@TesterTi Да, тут надо уточнить. Но скорее всего тут банальное - нет соединения. А его и не будет, если iP заблокирован, хоть какую стратегию ты на нем не пробуй
Я, наверное, добавлю использование doh к запросам курла в скрипте, на случай подмены DNS или типа того.
Но вот как отличить сервер забаненный по айпи от сервера повисающего на хендшейке автоматом, я хз.
А есть смысл? Гудбай вроде с квиком не помогает? Ну я в любом случае планирую там кое-что сделать по поводу того как стратегии применяются. Но если вам прям сейчас надо - зайдите в скрипт, там в начале есть gdpiAdditionalKeys, уберите оттуда -q. А в curlExtraKeys добавьте --http3-only. Тогда запросы будут по квику.
яканешн за скрипы не шарю толком (тока в повиршеле чучуть(и то щас нееросеть за меня делает)) и поетому мен не понятн вот есь переменая мапингУрл которая определяет GGC кластер но она дальше по коду не вызывается нигде где фигурирует слово cluster\clustername or whatver вот из етого вопрос как оно определяет клустер
походу пора уже в гит выносить етот скрип ато тут искать где (не)Ori какие версии выкатил или нет
Улучшение такого сложного скрипта можно разделить на несколько аспектов: повышение читаемости, улучшение функциональности, добавление обработки ошибок и оптимизация выполнения. Вот некоторые идеи, которые могут помочь:
Читаемость и Организация
Комментарии и Документация:
Добавьте больше комментариев, чтобы объяснить, что делает каждая часть скрипта. Это поможет вам и другим разработчикам понять логику скрипта.
Структурирование кода:
Разделите код на функции и метки, которые ясно описывают их назначение. Например, :CheckAdminRights, :CheckFilesExist, :InitializeVariables, и т.д.
Использование переменных:
Убедитесь, что все переменные имеют понятные и описательные имена. Это упростит понимание того, что они делают.
Функциональность
Проверка прав администратора:
Вместо использования fsutil, который может зависеть от настроек системы, используйте более надежные методы проверки прав администратора, например, через PowerShell.
Вместо многократного использования if not exist, можно создать отдельную функцию для проверки наличия файлов или каталогов и вызова этой функции с нужным параметром.
Динамическое создание списка URL:
Вместо жесткого задания URL в скрипте, можно сделать так, чтобы они считывались из конфигурационного файла или принимались как параметры.
Обработка ошибок
Более детальная обработка ошибок:
Добавьте обработку ошибок для каждого критического шага. Например, если не удается скачать файл с помощью Curl, запишите ошибку и продолжите с другими заданиями.
Логирование ошибок:
В дополнение к созданию лог-файла, можно добавлять более детальные сообщения об ошибках, включая код ошибки и строку, на которой она произошла.
Оптимизация
Параллельное выполнение:
Если возможно, выполните некоторые задачи параллельно. Однако, это может быть сложно в чистом Batch, поэтому можно использовать PowerShell или другие скрипты для более сложных задач.
Минимизация вызовов внешних программ:
Используйте внутренние команды Windows, где это возможно, чтобы уменьшить время выполнения.
Пример улучшенного кода:
@echo off
chcp 1251
title GoodCheck
cls
:: Проверка прав администратора
powershell -Command "if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { exit 1 }"
if %ERRORLEVEL% neq 0 (
echo ERROR: This script requires elevated privileges.
pause
exit /b
)
:: Инициализация переменных
set "goodCheckFolder=%~dp0"
set "logFileName=%goodCheckFolder%Log_%~n0_%date:~-4,4%-%date:~-10,2%-%date:~-7,2%_%time:~0,2%-%time:~3,2%-%time:~6,2%.txt"
:: Создание лог-файла
echo Creating log file...
echo GoodCheck Log - %date% - %time% > "%logFileName%"
if not exist "%logFileName%" (
echo ERROR: Cannot create log file.
pause
exit /b
)
:: Проверка наличия необходимых инструментов
call :CheckFileExistence "curl.exe" "Curl is required and was not found. Please install it."
:: Функция проверки существования файла
:CheckFileExistence
if not exist "%~1" (
echo ERROR: %~2
echo ERROR: %~2 >> "%logFileName%"
exit /b
)
goto :eof
:: Продолжение скрипта...
Заключение
Эти улучшения помогут сделать ваш скрипт более надежным, легким для чтения и поддерживаемым. Вы также можете рассмотреть возможность использования более мощного скриптового языка, такого как PowerShell или Python, для более
Можно немного пояснения. Я не очень понимаю как помогает DoH если блочится по IP например. Так и так пойдёт в итоге IP пакет с адресом сервера в адресе источника и этот IP бдует заблочен. Только если реально у ресурса(сервера) 100500 IP и они выдаются взавсимости от региона или там еще как то случайно при запросе через сторонний DNS в частности DoH, то может повезти и выдастся НЕ заблоченный IP. Но и то где гарантия. Или я чего-то упускаю?
что касается x.com то мне для него несколько IP выдаётся из сетки 104.244.42.0/24 (nslookup -type=A x.com 8.8.8.8)
такие же если я запрашиваю ресолвинг через тот же 1.1.1.1. (curl -k -H “accept: application/dns-json” “https://1.1.1.1/dns-query?name=x.com&type=A”) (не знаю полная ли это эмуляция DoH запроса или нет)
При попытке открытия в браузере сайта уходят SYN пакеты на один из них и в ответ ничего. Т.е. явно по крайней мере эти IP режет провайдер (билайн).
И опять возвращаясь к вопросу о провайдерах. Зачем кто-то из них блочит до сих пор что-то по IP если уже стоят ТСПУшки и все свои доп блоки можно как бы и отключить.
кароч дошло до меня чё ето значит ето запись в лолге вида
Strategies with 52 out of 67 successes:
ето идёт кароч по возростанию успешных обходов данной сратегии т.е. идёт сратегия потом написано 1 из 60 саксесс типа с етой сратегией работает только один сайт из списка который был проверен с конкретной стратегийе, кароч можно смело перематывать в конец лога и там брать самую “мощную” сратегию
Новый тестовый билд. Распаковываете в отдельную папку, старую папку лучше перед этим удалить совсем, включая config и т.д. Так как я там много поменял и старое, если подцепится, может сломаться.
В config.cmd прописываете пути до папок gdpi/zapret/byedpi. Запускаете со start.cmd.
спасибо, всё отлично работает, небольшое пожелание, можно в название лога включить какой вид обхода проверялся, что то типа Log_{goodbyedpi|zapret|ByeDPI}_GoodCheck_dd-mm-yyyy_hh-mm-ss?
так логировать можно начинать уже после выбора движка.
или два лога один для приложения, один лог перебора. Так логичнее, на мой взгляд, потому что после настройки приложения “вводная часть” проверок будет просто повторяться в каждом логе. Либо в лог писать только ошибки. Но это так, пожелание, ибо труд и так большой проделали. Еще раз спасибо.
Механику логирования я менять не планирую. Авто-переименование, наверное, сделаю.
Если вас только результат тестов интересует - там уже встроена функция outputMostSuccessfulStrategiesSeparately, которую можно включить в конфиге и которая выводит наиболее успешные стратегии в отдельный файл, который называется - сюрприз - MostSuccessfulStrategies_ИмяПрограммы.txt. Прямо как вы и заказывали.
Черт его знает, может и помогает. я пробовал добавить стратегии которые выдал чекер в гудбай без -q, стало лучше, не идеально, но лучше. Надо подумать как лучше стратегии применять.
Если будете дописывать скрипт, добавьте в конце вывод количества рабочих стратегий для каждого протестированного сервера, будет полезно.
Возможно есть смысл добавить стратегии только с fake-with-sni, у меня без него вообще ни одна стратегия не проходит.