GoodCheck - блокчек-скрипт для GoodbyeDPI, Zapret, ByeDPI

Значит и ему спасибо :slight_smile:

	if "%%j"=="000" (
		echo NOT WORKING	%%k {%%j}
	) else (
		echo WORKING		%%k {%%j}
		set /A successes+=1
	)

Ну конечно синтаксис batch очень не юзерфрендли. особенно конструкция for с токенами и нумерацией переменных по алфавиту. Ну и фишка с DelayedExpansion тоже вносит “неразбериху” в удобочитаемость кода.

Да, куда быстрее. Жаль не выводит файл с лучшими стратегиями, чтобы прикрутить его к однокнопочному скрипту. И без прав админа не стартует) Было бы круто если бы в дальнейшем и GUI появился с 2 кнопками или триггер в конфиг-файле просто. “Сделай мне хорошо” - полностью однокнопочный, где только конфига 2 с выхода забрать нужных и расширенный для остальных))
Молодец)

GoodCheck нет на GH. Ori сказал что не планирует самостоятельно заливать туда.

Странно. Но понятно

Выводит. В Config.cmd
set outputMostSuccessfulStrategiesSeparately=true
set “mostSuccessfulStrategiesFile=MostSuccessfulStrategies.txt”

А вот какая из них действительно лучшая - тут уже надо мозгом пошевелить, срипту такое не под силу )

Я про софтину на go написанную.
А на batch я тут приспособил бабушкам всяким ставить: https://ntc.party/t/сборка-pressx2win-подбор-конфига-парой-кликов

Вот и хотелось бы более лучшее решение) Хотя бы более быстрое)

А, блин, сорри, подслеповат к ночи стал (
Видел, хотел попробовать, но передумал - ручками надежнее. Если у тебя 9 лучших стратегий, то тут без этого никак.

Классно, блокчек может заменить ланчеры, если докрутить. damn_this_shit надо бы новый класс добавить для проверки, подтягивания и начальной конфигурации - запрета, байдпи и гудбайдпи. курл уже есть (можно добавить wget и aria2 в бедующем как альтернативы), колоризацию чтобы покрасивше. И наверно мои хотелки и закончены))

а нет, еще чтобы можно было проверять все 3, пусть по очереди, но все же… будут вписыватся в один лог, с выборкой по лучшим стратегиям, просто подпись добавить какие дпайки.

Всё, понял, о чём речь.
В том самом первом .go файле, строчка 50:

_program := exec.Command(`./x86_64/goodbyedpi.exe`, `_strategies[i]`)

Кроме использования переменных для пути к файлу, убираем так же апострофы вокруг _strategies[i]. Теперь i-й элемент _strategies нормально считывается, но есть один нюанс: в goodbyedpi передаётся одна большая строка в качестве аргумента, а не набор параметров со значениями. Чтобы передать параметры по отдельности, надо самому разбивать строку на составляющие.

Альтернативный метод: создание временного .bat файла с нужными аргументами и его запуск.


Посмотреть, как передаются аргументы, можно следующим образом.
  1. Создаём C# приложение (пусть будет ArgsTest.exe):
using System;
using System.IO;
class Program
{
    static async Task Main(string[] args)
    {
        string outFile = "Arguments.txt";
        string textToFile = "Arguments:\n";
        await File.WriteAllTextAsync(outFile, textToFile);
        int i = 0;
        foreach (string arg in args)
        {
            textToFile = String.Format("Arg[{0}]: {1}\n", i, arg);
            Console.Write(textToFile);
            await File.AppendAllTextAsync(outFile, textToFile);
            i++;
        }
    }
}
  1. В коде .go вместо goodbyedpi.exe используем наше приложение выше и смотрим на результаты.
_program := exec.Command(argsTestFolder + "/" + argsTestExeName, `_strategies[i]`)
Arguments:
Arg[0]: _strategies[i]
  • Без апострофов:
_program := exec.Command(argsTestFolder + "/" + argsTestExeName, _strategies[i])
Arguments:
Arg[0]: --reverse-frag --wrong-seq --fake-with-sni www.google.com --frag-by-sni --set-ttl 3 -e 1 -q
  • *Работающий workaround из второй версии:*
Arguments:
Arg[0]: --reverse-frag
Arg[1]: --wrong-seq
Arg[2]: --fake-with-sni
Arg[3]: www.google.com
Arg[4]: --frag-by-sni
Arg[5]: --set-ttl
Arg[6]: 3
Arg[7]: -e
Arg[8]: 1
Arg[9]: -q

Я смотрел только первую и вторую версии кода на .go, но, полагаю, можно также сравнивать и с любой из последующих.

Так а зачем? Метод из второй версии работает в 2 строчки:

_program := exec.Command(gdpi.path + string(os.PathSeparator) + gdpi.executableName)
_program.SysProcAttr = &syscall.SysProcAttr{CmdLine: " " + strategies[i].StrategyKeys}

Через cmd тоже есть решение в 2 строчки, без отдельных батников:

_program := exec.Command("cmd.exe")
_program.SysProcAttr = &syscall.SysProcAttr{CmdLine: "/c start " + gdpiFolder + string(os.PathSeparator) + gdpiExeName + " " + _strategies[i]}


Во время анализа ютуб начинает работать, после окончания нет

Ну так вы стратегию найденную себе установили в гудбае?

Какую стратегию?

Как установить…

Новый билд в шапке.
Добавлен отдельный чеклист - Список доменов только для Ютуба

Можно так: https://ntc.party/t/скрипт-для-выбора-конфигурации-goodbyedpi/
Если сложно, то так https://ntc.party/t/сборка-pressx2win-подбор-конфига-парой-кликов/ (мной не проверялось)

100 из 100 серверов гуглвидео кто-нибудь смог получить? Какие лучшие результаты получились?

Какой конкретно workaround использовать — вопрос вторичный. Самое главное, что cmd воспринимает строку с параметрами как один параметр, поэтому их надо разделять самим. Если бы, например, мы записали всё как _program := exec.Command(gdpiFolder + "/" + gdpiExeName, arg1, arg2, arg3), то это не было бы проблемой.

Also: “Curling”? Really?..

Ну так это слово не я придумал. В гугле легко найти примеры использования. Это как гуглить, но курлить. :thinking:

Про аргументы я уже понял.

Поможите с тем, что после запуска start.cmd, выбираю гудбай, после любую стратегию, програ что то быстро пишет и закрывается. Концовка логов: ---------------------

Script is ready.

Proceeding with “GoodbyeDPI” and “C:\папки(без пробелов и иных символов)\GoodbyeDPI[QUIC] - [e2] - [fake-with-sni].txt” strategy list…


Parsing strategy list…

Curl extra keys found: --http3-only
Strategy extra keys found: -e 2 --fake-with-sni FAKESNI