Skip to content

Instantly share code, notes, and snippets.

@EgorBron
Last active April 26, 2025 00:53
Show Gist options
  • Save EgorBron/d190b0e45daa372db45f90240ce268ea to your computer and use it in GitHub Desktop.
Save EgorBron/d190b0e45daa372db45f90240ce268ea to your computer and use it in GitHub Desktop.
Восстанавливаем доступ к ДС с помощью Amnezia WG

Оживляем ДС

Быстрый способ (на ~10 минут) для разблокировки Discord вместе с голосовыми каналами. Этот способ также разблокирует YouTube и X/Twitter, а также любые другие заблокированные сайты.

Спасибо ImMAILWARE за скрипт для генерации конфигов.

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

Способ с Linux

  1. Для начала вам потребуется доступ к Debian-like дистрибутиву Linux, если точнее - то к терминалу. При этом IP, с которого вы будете работать, должен быть не российским.

    • Варианты, где достать такой:
      1. Google Cloud Editor -- нужен только аккаунт гугла, НО не у всех заработает
      2. GitHub Codespaces -- нужен аккаунт гитхаба, сложнее в настройке (см. ниже)
      3. Debian VPS -- по ссылке один из вариантов, нужен только доступ к впске :)
      4. Прямо на Android (нужен любой VPN) -- см. ниже
      5. У себя на кухне Windows (лучше с WSL на Ubuntu/Debian, также требует VPN) -- кто знает - тот знает
  2. После того, как у вас откроется терминал, заходим как root (для удобства):

    sudo su
  3. Запускаем скрипт (о том, как оно работает, см. ниже):

    curl -sSL https://raw.githubusercontent.com/ImMALWARE/bash-warp-generator/main/warp_generator.sh | bash
  4. Если скрипт корректно отработал, то в терминале появится содержимое конфига WARP, а так же ссылка на его скачивание.

  5. Перед переходом по ссылке, проверьте, чтобы:

    1. Address был заполнен, а не выглядел как запятая с пробелом или null, null

      ❌ - Address = , ❌ - Address = null, null ✔️ - Address = xxx.yyy.zzz.www, aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111

    2. Endpoint был заполнен, а не выглядел как двоеточие с пробелами или null:null

      ❌ - Endpoint = : ✔️ - Endpoint = xxx.yyy.zzz.www:00000

    3. PrivateKey был заполнен, а не пустовал/был равен null

      ❌ - PrivateKey = ✔️ - PrivateKey = YWxvbmdsb25ncGhyYXNlc29pY2FucHV0aXRhc2tleQ==

    4. Сам файл в целом выглядел как что-то аккуратное -- должен быть один параметр на одну строку (Name = значение)
  6. Если что-то из шага 5. не указано в конфиге -- значит, что запрос конфига не удался, пробуйте другой метод

  7. Если же всё ок, переходим по ссылке (надо будет нажать по ней Ctrl+ЛКМ). Конфиг должен автоматически скачаться.

  8. Теперь важное:

    отключите все VPN, удалите GoodbyeDPI и его аналоги

    • Дело в том, что подобный софт будет вмешиваться в работу Amnezia, а мы же не хотим этого, так ведь?
  9. Теперь скачиваем

    • Amnezia VPN файл AmneziaVPN_X.X.X.X_x64.exe (для Android - AmneziaVPN_X.X.X.X_arm64-v8a.apk)
    • Или Amnezia WG (только Windows, только подключение к WG)
    • Или другой клиент WireGuard (не проверено)
  10. После установки, жмём на "Файл с настройками подключения" посередине (в Amnezia WG на "Добавить туннель" слева снизу или на "Импорт туннелей из файла")

    амнезия

    амнезия вг

  11. Выбираем скачанный файл с конфигом (WARP.conf)

  12. Жмём на "Подключить" в середине

  13. Ждём пару секунд

  14. Смотрим значение "Передача": если нулей нет, значит могу поздравить!

  15. Для чистоты перезапускаем дискорд. Вуаля, голосовые работают, сообщения пишутся. Временами может проседать пинг, но это не критично.

Проблемы?

  • Amnezia пишет про "две запятые подряд"
    • Возможно, в конфиге не указано значение Address, и там находится просто запятая
    • Решение: повторить запуск скрипты на другой машине
  • wg: command not found / jq: command not found
    • Не удалось установить пакеты wireguard-tools и/или jq
    • Решение: вручную установить пакеты (sudo apt-get update -y --fix-missing && sudo apt-get install wireguard-tools jq -y --fix-missing)
  • Конфиг скачался, но в "Передаче" нули / Не удаётся подключиться
    • Возможно, проблема в провайдере
    • Решение: поиграться с конфигом, поменяв параметры J* (junk) и H* (header) -- подробнее тут
  • Ошибка при импорте: "Строка должна быть в секции"
    • Это наверняка означает, что в конфиге "уехали" строчки параметров
    • Решение: руками отредактировать конфиг ИЛИ перегенерировать его

Вопросы?

  • Можно ли как-то ограничить работу Amnezia конкретным приложением?
    • Да, в "обычной" версии клиента Amnezia VPN (не Amnezia WG для Windows), есть настройка "Раздельное туннелирование". К сожалению, доступно ограничение только для приложений, и то в виде чёрного списка.
    • Не знаю, почему, но в конфиге WireGuard, который закидывается в Amnezia, не работают параметры AllowedApps и DisallowedApps.

Другие способы

Браузер

  1. Для начала скачайте расширение Tampermonkey и любой бесплатный VPN.
    • Tampermonkey - Chrome | Firefox
    • Я лично пользуюсь Browsec VPN, но тут уже ваш выбор
  2. Создайте новый скрипт в Tampermonkey
  3. Вставьте код из спойлера ниже
  4. Сохраните скрипт (Файл - Сохранить)
  5. В настройках Tampermonkey меняем "Режим конфигурации" с "Новичок" на "Опытный"
  6. В тех же настройках прокручиваем вниз до "Загрузки BETA", где меняем "Режим скачивания" на "API браузера"
  7. Включаем VPN-расширение
  8. Заходим на любой сайт
  9. Вуаля! Конфиг скачивается. Переходим к шагу 8 основного гайда.
  10. Если чуда не случилось, открываем инструменты разработчика (или, как их называют некоторые - код элемента), вкладку "Консоль" (Console), перезагружаем страницу и копируем текст конфига между ########## НАЧАЛО КОНФИГА ########## и ########## КОНЕЦ КОНФИГА ########## и сохраняем его в текстовый файл
  11. После получения конфига отключите расширение в меню Tampermonkey (тыкнув на переключатель)

Браузерная версия

// ==UserScript==
// @name         Cloudflare WARP Config Generator
// @namespace    http://github.com/
// @version      1.0
// @description  Генерация конфигурации WARP с помощью Tampermonkey
// @author       Egor Bron (ориг. автор - ImMALWARE https://github.com/ImMALWARE/)
// @match        *://*/*
// @grant        GM_xmlhttpRequest
// @grant        GM_download
// @connect      api.cloudflareclient.com
// ==/UserScript==
(function() {
    'use strict';

    // TweetNaCl.js для генерации ключей Curve25519
    const script = document.createElement('script');
    script.src = "https://cdn.jsdelivr.net/npm/[email protected]/nacl.min.js";
    document.head.appendChild(script);

    script.onload = () => {
        // Функция для конвертации массива байт в Base64
        function arrayBufferToBase64(buffer) {
            let binary = '';
            const bytes = new Uint8Array(buffer);
            const len = bytes.byteLength;
            for (let i = 0; i < len; i++) {
                binary += String.fromCharCode(bytes[i]);
            }
            return btoa(binary);
        }

        // Генерация приватного и публичного ключей в формате Base64 (32 байта)
        function generateKeyPair() {
            const keyPair = nacl.box.keyPair();
            const priv = arrayBufferToBase64(keyPair.secretKey);
            const pub = arrayBufferToBase64(keyPair.publicKey);
            return { priv, pub };
        }

        // Функция для отправки HTTP-запросов через Tampermonkey API
        function apiRequest(method, endpoint, data, token = null) {
            return new Promise((resolve, reject) => {
                const headers = {
                    'User-Agent': '',
                    'Content-Type': 'application/json'
                };
                if (token) {
                    headers['Authorization'] = `Bearer ${token}`;
                }

                GM_xmlhttpRequest({
                    method: method,
                    url: `https://api.cloudflareclient.com/v0i1909051800/${endpoint}`,
                    headers: headers,
                    data: JSON.stringify(data),
                    onload: function(response) {
                        try {
                            const jsonResponse = JSON.parse(response.responseText);
                            resolve(jsonResponse);
                        } catch (e) {
                            reject(e);
                        }
                    },
                    onerror: reject
                });
            });
        }

        (async function() {
            const { priv, pub } = generateKeyPair();

            // Шаг 1: Регистрация
            const regResponse = await apiRequest('POST', 'reg', {
                install_id: '',
                tos: new Date().toISOString(),
                key: pub,
                fcm_token: '',
                type: 'ios',
                locale: 'en_US'
            });

            const id = regResponse.result.id;
            const token = regResponse.result.token;

            // Шаг 2: Обновление настроек
            const secResponse = await apiRequest('PATCH', `reg/${id}`, {
                warp_enabled: true
            }, token);

            const peer_pub = secResponse.result.config.peers[0].public_key;
            const peer_endpoint = secResponse.result.config.peers[0].endpoint.host;
            const client_ipv4 = secResponse.result.config.interface.addresses.v4;
            const client_ipv6 = secResponse.result.config.interface.addresses.v6;
            const port = peer_endpoint.split(':').pop();
            const final_peer_endpoint = '162.159.193.5';

            // Формируем конфиг
            const conf = `
[Interface]
PrivateKey = ${priv}
S1 = 0
S2 = 0
Jc = 120
Jmin = 23
Jmax = 911
H1 = 1
H2 = 2
H3 = 3
H4 = 4
Address = ${client_ipv4}, ${client_ipv6}
DNS = 1.1.1.1, 2606:4700:4700::1111, 1.0.0.1, 2606:4700:4700::1001

[Peer]
PublicKey = ${peer_pub}
AllowedIPs = 0.0.0.0/1, 128.0.0.0/1, ::/1, 8000::/1
Endpoint = ${final_peer_endpoint}:${port}
`.trim();

            // Скачивание конфигурации с помощью Tampermonkey API
            GM_download({
                url: 'data:text/plain;base64,' + btoa(conf),
                name: 'WARP.conf',
                saveAs: true
            });

            console.log("\n\n\n########## НАЧАЛО КОНФИГА ##########");
            console.log(conf);
            console.log("########### КОНЕЦ КОНФИГА ###########");

        })();
    };
})();

GitHub Codespaces

  1. Регистрируемся на GitHub, если вы ещё этого не сделали
  2. На главной странице жмём на + > New Repository
  3. Даём репозиторию любое название (можно нажать на зелёный текст рядом с Need inspiration? How about ... ?)
  4. ОБЯЗАТЕЛЬНО нажмите на Add a README file
  5. На странице репозитория жмём на Code, Codespaces, Create codespace on main
  6. Ждём, пока оно загрузится
  7. Откроется VS Code, но придётся ещё немного подождать
  8. Снизу появится окно терминала
  9. Теперь начинаем с 3 шага основоного гайда

Android + Termux + VPN

  1. Скачиваем Termux (termux-app_vX.X.X+github-debug_arm64-v8a.apk)

  2. В настройках приложения выдаём право на работу с файлами (опционально)

  3. Открываем Termux, в консоли устанавливаем необходимые пакеты:

    pkg install wireguard-tools jq nano -y
  4. Теперь создаём в Nano файл: nano warpgen.sh

  5. Вставляем в редактор код из спойлера ниже

  6. Жмём Ctrl+X, затем Y, затем Enter

  7. Добавляем файлу возможность запускаться: chmod +x ./warpgen.sh

  8. Запускаем любой впн

  9. Возвращаемся в Termux и запускаем: ./warpgen.sh

  10. Переходим по ссылке для скачивания ИЛИ Копируем содержимое между ########## НАЧАЛО КОНФИГА ########## и ########## КОНЕЦ КОНФИГА ########## и сохраняем в файл (можно прямо в Termux: nano WARP.conf, cp WARP.conf /storage/emulated/0/Download)

  11. Теперь можно перейти к основному гайду и начать с шага 8

Чуть-чуть обрезаный скрипт для Termux

priv="${1:-$(wg genkey)}"
pub="${2:-$(echo "${priv}" | wg pubkey)}"
api="https://api.cloudflareclient.com/v0i1909051800"
ins() { curl -s -H 'user-agent:' -H 'content-type: application/json' -X "$1" "${api}/$2" "${@:3}"; }
sec() { ins "$1" "$2" -H "authorization: Bearer $3" "${@:4}"; }
response=$(ins POST "reg" -d "{\"install_id\":\"\",\"tos\":\"$(date -u +%FT%T.000Z)\",\"key\":\"${pub}\",\"fcm_token\":\"\",\"type\":\"ios\",\"locale\":\"en_US\"}")

id=$(echo "$response" | jq -r '.result.id')
token=$(echo "$response" | jq -r '.result.token')
response=$(sec PATCH "reg/${id}" "$token" -d '{"warp_enabled":true}')
peer_pub=$(echo "$response" | jq -r '.result.config.peers[0].public_key')
peer_endpoint=$(echo "$response" | jq -r '.result.config.peers[0].endpoint.host')
client_ipv4=$(echo "$response" | jq -r '.result.config.interface.addresses.v4')
client_ipv6=$(echo "$response" | jq -r '.result.config.interface.addresses.v6')
port=$(echo "$peer_endpoint" | sed 's/.*:\([0-9]*\)$/\1/')
peer_endpoint=$(echo "$peer_endpoint" | sed 's/\(.*\):[0-9]*/162.159.193.5/')

conf=$(cat <<-EOM
[Interface]
PrivateKey = ${priv}
S1 = 0
S2 = 0
Jc = 120
Jmin = 23
Jmax = 911
H1 = 1
H2 = 2
H3 = 3
H4 = 4
Address = ${client_ipv4}, ${client_ipv6}
DNS = 1.1.1.1, 2606:4700:4700::1111, 1.0.0.1, 2606:4700:4700::1001

[Peer]
PublicKey = ${peer_pub}
AllowedIPs = 0.0.0.0/1, 128.0.0.0/1, ::/1, 8000::/1
Endpoint = ${peer_endpoint}:${port}
EOM
)

clear
echo -e "\n\n\n"
[ -t 1 ] && echo "########## НАЧАЛО КОНФИГА ##########"
echo "${conf}"
[ -t 1 ] && echo "########### КОНЕЦ КОНФИГА ###########"

conf_base64=$(echo -n "${conf}" | base64 -w 0)
echo "Скачать конфиг файлом: https://immalware.github.io/downloader.html?filename=WARP.conf&content=${conf_base64}"

Как это работает

Вообще, танец с бубном вокруг bash-скрипта нужен лишь для одной-единственной цели: сделать запрос к Cloudflare WARP и получить заветные адреса для подключения.

То есть всё можно провернуть и без участия Linux, достаточно иметь wireguard-tools (или доступ к алгоритму Curve25519) и возможность сделать POST-запрос к адресу CF.

На основе этого родилась браузерная версия генератора конфига, которая:

  1. генерирует пару ключей (публичный+приватный) с помощью библиотеки TweetNaCl.js
  2. делает запрос к CF для получения адресов (а так как у нас запущен VPN, то запрос спокойно выполняется)
  3. подставляет полученные значения в конфиг, который я любезно стырил позаимствовал у ImMALWARE.
@uwochka
Copy link

uwochka commented Nov 7, 2024

ребята у всех теперь амнезия не работает? там может новый скрипт появился или что-то, но у меня с устройств при подключении всегда "принято: 0б"

@jolywho
Copy link

jolywho commented Nov 16, 2024

а как исправить то что профили в дискорде через варп не прогружаются ?

@LightTheAngel
Copy link

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

@LightTheAngel
Copy link

теперь опять ничего с варпом не работает

@Axifor
Copy link

Axifor commented Nov 21, 2024

теперь опять ничего с варпом не работает

пока что используем другой endpoint в уже готовых конфигах, смотрите мой тг канал https://t.me/findllimonix/18

Ну вот мне сказали вписать "188.114.97.170:2408" а что это вообще за IP?

UPD: посмотрел.

@nige1r
Copy link

nige1r commented Nov 21, 2024

Я как врубаю амнезию у меня вообще пропадает интернет на компьютере. Новые конфиги пробовал создавать. что делать?

@LightTheAngel
Copy link

Я как врубаю амнезию у меня вообще пропадает интернет на компьютере. Новые конфиги пробовал создавать. что делать?

Пока ждем, отслеживаем что в тг новости

@liscot
Copy link

liscot commented Nov 22, 2024

awg снова живёт на варпе от llimonix! VV

@LightTheAngel
Copy link

У меня топор теперь работает если что, на все, тоже вариант

@LightTheAngel
Copy link

У меня топор теперь работает если что, на все, тоже вариант

в топоре прошлый ендоинт , который крашнулся, но сейчас все работает и на нем. Обновления для топор версел последний раз я делал :)

дуинг годс ворк, так сказать. тебя можно как то поддержать символической суммой денег?

@LightTheAngel
Copy link

У меня топор теперь работает если что, на все, тоже вариант

в топоре прошлый ендоинт , который крашнулся, но сейчас все работает и на нем. Обновления для топор версел последний раз я делал :)

дуинг годс ворк, так сказать. тебя можно как то поддержать символической суммой денег?

только если это миллион евро

жду ссылку на онлифанс

@LightTheAngel
Copy link

У меня топор теперь работает если что, на все, тоже вариант

в топоре прошлый ендоинт , который крашнулся, но сейчас все работает и на нем. Обновления для топор версел последний раз я делал :)

дуинг годс ворк, так сказать. тебя можно как то поддержать символической суммой денег?

только если это миллион евро

жду ссылку на онлифанс

бля спасибо огромное , не ожидал , не ожидал

да не за что, золотые ручки надо прикармливать

@Doker537
Copy link

Все работает шикарно, но хотелось бы узнать принцип работы)
У меня есть впс, через амнезию (не вг) плохо работает любой туннель (т.е буквально впн работает на все приложения), а сам я активно пользуюсь ютуб чатгпт и дискорд, есть ли какая-то возможность нормально настроить туннели имя свой впн через впс и амнезию?

как вообще работает сама amneziawg и можно ли с помощью этого способа сделать разблокировки для chatgpt?

@nellimonix
Copy link

У меня топор теперь работает если что, на все, тоже вариант

в топоре прошлый ендоинт , который крашнулся, но сейчас все работает и на нем. Обновления для топор версел последний раз я делал :)

дуинг годс ворк, так сказать. тебя можно как то поддержать символической суммой денег?

только если это миллион евро

жду ссылку на онлифанс

бля спасибо огромное , не ожидал , не ожидал

да не за что, золотые ручки надо прикармливать

вот мне интересно вот что, мне сбросили пароль на основе (llimonix) по причине что Я типо мошенник. Восстановить теперь доступ я не могу, только через поддержку (для этого я создал этот аккаунт). Зачем они при СБРОСЕ ПАРОЛЯ скрывают мои старые комментарии и проекты, которые были написанные мной. Не логично ли им было бы ограничивать те действия, которые выполнялись после того как они подумали что доступ получил посторонний человек.
Просят меня коды с аутентификатора или коды восстановления (которые я не сохранял), а аутентификатор от майкрософт мои все ключи от гитхаб, епик и тд стер. Вот так вот в 1 момент можно потерять свой гитхаб аккаунт и ждать поддержку мне теперь 2-3 месяца. Просто бред. 1 раз зашел по паролю в акк вместо подтверждение по приложению на телефоне и сразу под снос. Держим кулачки за мой основной гитхаб, ниче важного там нет, но все равно тяжело терять то что я активно начал развивать

@DikozImpact
Copy link

вот мне интересно вот что, мне сбросили пароль на основе (llimonix) по причине что Я типо мошенник...

Сочувствую( Моему знакомому тоже недавно заблочили, только там кто-то заспамил жалобами и ему временный блок дали из-за этого

@valentYKT
Copy link

ребята не подскажете что за числа в конце айпишников после / в AllowedIPs?

@McLarenGT3
Copy link

Использование тунелей с амнезией безопасно? Как это вообще работает?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment