Этот репозиторий не является форком Podkop и не содержит исходный код Podkop целиком.
Оригинальный проект: itdoginfo/podkop.
Здесь хранится только патч, который добавляет режим Микс для подписок и ручных proxy-ссылок, вкладку управления конфигами из подписок и безопасный автоподбор DNS.
В раскрытой секции вкладки «Подписки» выберите нужные сервисы и нажмите «Проверить сервисы». Проверяются узлы этой секции, прошедшие выбор источников, ручной отбор и теги, отдельным процессом, без переключения рабочего прокси. Узел допускается при положительном результате всех выбранных сервисов. Непроверенные, просроченные и неоднозначные результаты не дают нового допуска. Истечение срока само по себе не переключает рабочие узлы: при загрузке может сохраняться прежний допущенный набор, но новые узлы требуют свежей проверки. Пустой набор сервисов отключает дополнительный фильтр. Отдельные ручные proxy-ссылки пока не проверяются: для таких секций включение фильтра отклоняется.
Быстрая проверка использует кеш и проверяет только новые или устаревшие результаты. Полная перепроверка запускается отдельным действием. Постоянных фоновых прогонов нет.
Для Gemini используйте готовый список «Google AI» в списках маршрутизации секции: он содержит связанные домены, но сам по себе не проверяет узел. Подсказка рядом с фильтром показывает, выбран ли этот список. Маршруты автоматически не меняются; весь список доменов при каждой проверке узла не прогоняется.
«Предварительно проходит» — специфичный положительный ответ веб-сервиса, не гарантия работы чата или аккаунта. HTTP 200, страница входа и капча сами по себе не считаются успехом. Gemini проверяется по известному признаку доступности веб-приложения: читается регион Google из HTML, а не страна в имени узла. Российский регион отклоняется; неизвестный ответ показывается отдельно. ChatGPT — по ответу каталога анонимных моделей. Неофициальные признаки могут измениться: неизвестный ответ не превращается в ложное «работает». Подробные пояснения свёрнуты под «Подробнее». Проверки сохраняют реальные DNS-резолверы, но не загружают списки маршрутизации LAN для каждого узла.
Если вы получили ответ в настоящем чате именно через этот узел, можно подтвердить его вручную после сетевой проверки. Тогда отображается «Подтверждён вами». Cookies, пароли и сообщения не передаются роутеру. Подтверждение не продлевает проверку; изменение конфигурации узла или DNS требует новой проверки. После отбора нажмите «Применить» один раз; остальные черновики сохраняются.
Методика сравнивалась с URL-проверкой сохранённого ZeroBlock 0.8.5-r44, censorcheck и RegionRestrictionCheck. Общая HTTP-проверка не доказывает работу чата. Региональные условия: Gemini Web и ChatGPT.
Во вкладке «Подписки» у каждого источника есть отдельная галочка включения. Рядом расположены кнопки обновления, пинга и бенчмарка только этой подписки; общие кнопки вверху выполняют действие для всех подписок. Выбор источника сохраняет кеш и результаты тестов остальных подписок. Наведите указатель на галочку или значок, чтобы увидеть подсказку. После «Применить» отключённая подписка не попадает в рабочие группы Podkop. Её конфиги остаются видимыми, сохраняют индивидуальные галочки и доступны для обновления, пинга и бенча. Диагностические запросы выполняются отдельным временным процессом sing-box на loopback, без переключения рабочего прокси.
Состояние подписки привязано к её URL, поэтому перестановка списка его не меняет. Одинаковый конфиг из нескольких подписок остаётся рабочим, если включён хотя бы один его источник. В каждой секции должен оставаться хотя бы один включённый поддерживаемый конфиг. При недоступности сервера подписки сохраняется предыдущий кеш этой подписки; доступные подписки обновляются независимо, а интерфейс показывает ошибку у соответствующего источника.
Компактный индикатор показывает состояние операций: «Готово», «Podkop занят», «Обновляется», «Нужно применить» или «Ошибка». Занятость проверяется на роутере; при недоступном статусе конфликтующие действия заблокированы. Это не проверка доступности интернета или всех прокси. Повторное нажатие не запускает дубликат. При ошибке применения и переходе между вкладками несохранённые галочки остаются в открытой странице (перезагрузка страницы их сбросит). Выбор переносится при однозначном совпадении конфигов; для действительно новых узлов галочки нужно проверить.
Новая версия: 20261010-game-filter-v2 для Podkop 0.7.19–0.7.22. Обновление доступно через универсальную команду ниже. Podkop 0.7.23 использует отдельный канал PE.
Галочка «Выбран» показывает выбор до фильтров. Допуск узла указан в колонке «Статус»; сводки «К применению» учитывают источники, ручной выбор и фильтры без двойного подсчёта. Рядом с проверками сервисов видны число подходящих узлов, свежие результаты, необходимые проверки, отказы и неопределённые ответы. Подсказка объясняет следующий шаг. Свежий неопределённый ответ больше не описывается как отсутствие свежего подтверждения. Фильтры сервисов и срок годности проверок не изменены.
В каждой секции вкладки «Подписки» есть переключатель «Тип узлов»: «Все», «Игровые», «Неигровые».
Игровыми считаются узлы со словом Игровой в названии; остальные относятся к неигровым.
Этот выбор сужает набор вместе с фильтрами стран, источниками, ручным отбором и обязательными сервисами.
«Все» снимает только игровой фильтр. Протокол Hysteria2 и значок 🎮 сами по себе ничего не определяют.
Изменение действует после нажатия «Применить».
Перенесены фильтры PE «Скрыть недоступные» и «Скрыть медленные» с порогом задержки в мс (1–60000, по умолчанию 1000). Это только фильтры отображения: они не выключают конфиги, не меняют маршруты и не сокращают набор тестирования. Выбранный узел, текущий узел Fastest, сама группа и ещё не проверенные узлы остаются видимыми. Отсутствие результата не считается отказом; «Нет ответа» и «Не проверен» показываются отдельно. Настройки отображения сохраняются в браузере, а после теста список обновляется с учётом текущих фильтров.
Это перенос дашборда, а не всего DNS-контура PE: новый бенчмарк пар DNS, расширенные DNS-транспорты и их backend в старый канал пока не перенесены.
Вкладка «Секции» показывает компактную таблицу: название, тип подключения, количество источников и элементов списков. Адреса подписок и proxy-ссылки в таблице не раскрываются. Кнопка «Редактировать» открывает настройки секции на вкладках «Подключение», «Проверка узлов», «Списки» и «Дополнительно».
«Сохранить» в редакторе сохраняет изменения в LuCI без перезапуска Podkop. Можно отредактировать несколько секций и затем один раз нажать общее «Применить». При ошибке сохранения окно остаётся открытым с введёнными значениями и пояснением. Ширина страницы остаётся штатной для темы LuCI.
Эта компоновка перенесена из PE без перехода на Podkop 0.7.23 или podkop-engine. Опции резервных узлов и проверки загрузки, требующие нового движка, здесь не показываются. Фильтры и ручной отбор подписок из предыдущего выпуска сохраняются.
В каждой секции ручной отбор включается отдельным переключателем. При выключенном ручном отборе участвуют все поддерживаемые конфиги включённых подписок, прошедшие фильтр тегов. При включённом доступны «Только выбранные» и «Все, кроме выключенных». Ранее сохранённый ручной режим сохраняется после обновления. Выбор независим для каждой секции; пустой рабочий набор отклоняется, изменения применяются одной транзакцией с восстановлением при ошибке.
В каждой секции есть селекторы разрешённых и исключённых тегов из фактических
названий узлов подписок. Префиксы EU, RU, US, SE, FI показываются
с расшифровкой; флаг и буквенный код одной страны соответствуют одному тегу.
Ранее сохранённые пользовательские шаблоны сохраняются.
Пустой список включения не ограничивает узлы. Если узел совпал с исключением,
он не используется, даже если совпал со списком включения.
Правила сохраняются для секции и проверяются снова после изменения подписки. Так новые нежелательные узлы не попадут в рабочий набор после применения обновлённого кеша. В режиме «Только выбранные» новый узел остаётся выключенным, даже если подходит под фильтр. Фильтр не меняет сохранённые галочки отдельных конфигов и не включает выключенную подписку.
Все конфиги остаются видимыми после раскрытия подписки; их можно пинговать и проверять бенчмарком. Перед применением интерфейс показывает размер будущего рабочего набора. Если в секции не останется ни одного включённого поддерживаемого узла, применение отклоняется с сохранением прежних настроек. Фильтры, режим выбора и галочки применяются одной транзакцией. При таймауте интерфейс проверяет результат операции и подтверждает применение только после совпадения сохранённых значений. Ошибка чтения сохраняет последний список и несохранённый выбор для последующего восстановления.
Секции и подписки по умолчанию свёрнуты. Заголовки показывают количество конфигов и узлов, допущенных к работе, а также ошибки подписок. Раскрытое пользователем состояние сохраняется при обновлении данных в открытой странице; после перезагрузки страницы всё снова свёрнуто.
Плановое обновление и кнопки обновления подписок теперь только получают кеш. Активный конфиг, sing-box, DNS и сетевые правила при этом не меняются. Новые серверы ожидают явного применения; повторное плановое обновление не применяет их автоматически. Ошибка скачивания сохраняет прежний кеш. Это осознанное изменение поведения: новый или изменённый сервер не начинает использоваться сразу после скачивания подписки.
Для явного применения в согласованное окно обслуживания (возможен разрыв текущих прокси-соединений):
PODKOP_SUBSCRIPTION_APPLY_NOW=1 /usr/bin/podkop subscription_updateКоманда получает подписки и применяет накопленные изменения всех секций.
При неизменном итоговом конфиге сигнал перезагрузки не отправляется. Само
применение через SIGHUP не гарантирует сохранения TCP/UDP-сессий. Предыдущий
конфиг сохраняется на время применения для восстановления при обнаруженной
ошибке; проверка наличия процесса не является доказательством работы трафика.
Обычный перезапуск Podkop или роутера также использует обновлённый кеш.
Маркер ожидания находится в /tmp/podkop-subscription-reload.pending и не
является постоянным журналом. Кнопка «Применить» во вкладке «Подписки» активна
также при наличии скачанных, но ещё не применённых конфигов.
Установка самого патча может перезапустить сервисы: обновляйте сначала один
роутер в согласованное окно, а не всю сеть одновременно.
Выполнять уже внутри SSH-сессии на роутере:
u=https://raw.githubusercontent.com/moz9/podkop-patch-subscriptions/main/i;f=/tmp/podkop-i;wget --no-check-certificate -O $f $u&&sh $fЭто одна универсальная команда для первой установки и последующих обновлений.
Что делает установщик:
- если Podkop не установлен, ставит официальный Podkop, затем применяет патч подписок;
- первая установка проходит без дополнительных вопросов: обязательный конфликтующий
https-dns-proxyудаляется через официальный установщик, а русскую локализацию затем ставит сам патч; - если установленная версия Podkop входит в список совместимости патча, сохраняет её и не запускает рискованное автоматическое обновление пакетов;
- официальный Podkop обновляется отдельно: центр обновлений включает принудительное обновление только в совместном режиме
Podkop + патч, а из терминала его можно явно запросить сPODKOP_PATCH_FORCE_PODKOP_UPDATE=1; - перед обновлением сверяет последнюю версию Podkop со списком совместимости патча и не устанавливает неподдерживаемый релиз;
- если Podkop старее
0.7.0, останавливается с понятной ошибкой: такие версии требуют ручной миграции официального Podkop; - если патч
Миксуже актуален, завершает работу сPODKOP_PATCH_NOOP=1; - сохраняет настройки Podkop, подписки, кеш подписок и исключённые конфиги.
Если raw.githubusercontent.com недоступен, запасной вариант через CDN. После свежей публикации CDN может некоторое время отдавать предыдущую версию установщика:
u=https://fastly.jsdelivr.net/gh/moz9/podkop-patch-subscriptions@main/i;f=/tmp/podkop-i;wget --no-check-certificate -O $f $u&&sh $fЕсли на роутере сломан DNS, но прямой HTTPS до GitHub доступен:
f=/tmp/podkop-i;wget --no-check-certificate --header='Host: raw.githubusercontent.com' -O $f https://185.199.108.133/moz9/podkop-patch-subscriptions/main/i&&sh $fЭтот вариант помогает скачать наш установщик без DNS. Для первой установки официального Podkop всё равно нужен рабочий доступ к GitHub/OpenWrt downloads.
Установщик:
- перед обновлением сохраняет
/etc/config/podkopи/etc/podkop, чтобы не потерять настройки Podkop, кеш подписок и исключённые конфиги; - безопасно пропускает автоматическое обновление официального Podkop для любой поддерживаемой установленной версии;
- скачивает runtime-патч, LuCI-файлы и русскую локализацию;
- делает резервную копию изменяемых файлов в
/root/podkop-patch-subscriptions-backup-*; - по умолчанию хранит только 2 последние резервные копии;
- применяет патч поверх актуального Podkop;
- проверяет shell-синтаксис;
- при первом временном сбое запуска один раз повторяет запуск Podkop перед откатом;
- перезагружает Podkop и LuCI;
- при ошибке возвращает файлы из резервной копии.
Для установки Podkop с нашим патчем, ByeDPI, Cloudflare WARP и ZeroTier выполните через SSH от root:
wget -O /tmp/owrt-a https://raw.githubusercontent.com/moz9/podkop-patch-subscriptions/main/a && sh /tmp/owrt-aСкрипт a рассчитан на OpenWrt с opkg или apk и архитектурой
aarch64_cortex-a53: это ограничение текущего установщика WARP.
На другой архитектуре он остановится до установки пакетов. Нужны рабочий
интернет, верное время и доверенные сертификаты HTTPS. Сначала примените
или отмените несохранённые изменения LuCI.
Если Podkop отсутствует, скрипт устанавливает официальный Podkop и затем
наш патч. После этого устанавливает ByeDPI, WARP и ZeroTier.
Недостающие jq, curl и сертификаты устанавливаются через пакетный
менеджер. Общего обновления всех пакетов и перезагрузки роутера нет.
Перед запуском установщиков скрипт скачивает их, проверяет SHA-256
и shell-синтаксис. Повторный запуск сохраняет существующие настройки.
При первой установке WARP регистрируется и подключается, но весь трафик роутера в туннель автоматически не переводится. ByeDPI запускается с настройками своего установщика. Подписки и списки маршрутизации Podkop нужно задать самостоятельно; для ZeroTier нужны Network ID и разрешение роутера в вашей сети. Частные идентификаторы в скрипт не встроены.
Установщики могут перезапустить Podkop, LuCI и ZeroTier. Запускайте команду в подходящее окно обслуживания, особенно при подключении через ZeroTier. При ошибке скрипт останавливается, сообщает проблемный этап и перечисляет завершённые. Уже установленные компоненты остаются; единого отката всего набора нет. После устранения причины можно повторить ту же команду.
- режим
Миксдля чтения proxy-конфигов из HTTP/HTTPS-подписок и ручного добавления отдельных proxy-ссылок; - поддержку нескольких подписок в одной секции;
- кеш последней рабочей версии подписки;
- бесшовную активацию обновлённого кеша подписок через быструю перезагрузку только sing-box: nftables и dnsmasq не удаляются, а при неизменившемся активном конфиге перезагрузка вообще не выполняется;
- поддержку подписок Remnawave с ограничением по устройствам: приватный идентификатор роутера отправляется только после явного запроса HWID от провайдера, а подставные конфиги «приложение не поддерживается» безопасно исключаются;
- фильтрацию неподдерживаемых Podkop конфигов до генерации sing-box;
- отдельный список неподдерживаемых конфигов в дашборде;
- вкладку
Подпискидля включения и исключения отдельных конфигов; - транзакционное применение изменений сразу во всех секциях с одной фиксацией и одним перезапуском Podkop; при ошибке после записи настройки и кеши возвращаются из снимка;
- синхронизацию вкладки с фактическим состоянием после ошибки, чтобы интерфейс не сообщал об отказе при уже применённых изменениях;
- адаптивные карточки подписок, DNS-результатов, диагностики и дашборда для стандартной темы LuCI и Proton2025, включая мобильные экраны;
- компактные действия во вкладке
Подписки: обновить подписки, ping, быстрый тест скорости, применить и сбросить выбор; обновление самого патча находится вДиагностике; - кеш community subnet списков, чтобы быстрый reload не оставлял
podkop_subnetsпустым; - однокнопочный подбор полной связки
протокол + основной DNS + bootstrap DNSпо реальным запросам с роутера; - единый глобальный рейтинг UDP, DoH и DoT: по умолчанию один тест последовательно проверяет все три режима и выбирает лучшую связку независимо от текущего режима Podkop;
- возможность оставить для теста один или два протокола, чтобы сократить время проверки;
- статистически устойчивый DNS-тест с прогревом, 8 bootstrap- и 20 основных измерений, медианой, P90 и межквартильным разбросом;
- проверка совместимости с Google Play, Google CDN, Steam, Microsoft, GitHub и CDN-сервисами; DNS с фильтрацией не выбирается как универсальный, пока доступен стабильный нефильтрующий вариант;
- после установки выбранной пары выполняются небольшие Google Play download и ChatGPT/OpenAI HTTPS canary, включая официальный OIDC discovery входа ChatGPT; если обязательный загрузочный тракт недоступен, прежние DNS автоматически восстанавливаются;
- отдельные проверки выбранных community-списков Podkop, включая YouTube, Telegram, Meta, Discord, Twitter и Google AI; недоступный выбранный сервис исключает DNS из надёжных рекомендаций;
- community-проверки используют отвечающие DNS-имена из актуальных списков allow-domains, чтобы не отклонять все DNS из-за неактивного домена или корня CDN без A-записи;
- выбор основных и bootstrap DNS для проверки, чтобы не запускать полный каталог при каждом тесте;
- компактный безопасный набор по умолчанию: Cloudflare, Google и Control D; AdGuard Unfiltered и Mullvad остаются доступны для явного ручного включения;
- сохраняемые пользовательские DNS-кандидаты отдельно для UDP, DoH и DoT;
- автоматическая рекомендация только из известных публичных нефильтрующих пар; текущие, пользовательские и WAN DNS остаются в таблице только для сравнения и явной ручной установки;
- Yandex доступен только как bootstrap DNS и исключён из основного и резервного upstream, обычного каталога, результатов и автоматических рекомендаций;
- один понятный итог подбора: отдельные карточки основной и независимой резервной связок плюс одна кнопка безопасной установки обеих;
- подробная таблица по умолчанию свёрнута и остаётся экспертным режимом; сравниваемые, но неподходящие для рекомендации строки установить нельзя;
- сохранение последнего завершённого теста под раскрываемым блоком даже после установки, отката и повторного открытия страницы;
- автоматический выбор двух независимых полных DNS-пар: предпочтительной и резервной, по возможности с разными основными и bootstrap-провайдерами;
- лёгкий watchdog без дополнительного DNS-сервиса: после двух последовательных отказов активной пары он проверяет вторую, переключает весь DNS-тракт Podkop, проверяет sing-box и FakeIP и автоматически откатывает неудачное переключение;
- отдельные ручные поля протокола, основного и bootstrap DNS для резервной пары; при ручном изменении предпочтительной пары штатная кнопка LuCI снова активирует её;
- сохранение текущей DNS-пары, когда несколько вариантов статистически равны, чтобы повторные проверки не вызывали случайные переключения;
- применение рекомендованных DNS с повторной проверкой прикладных доменов через sing-box и dnsmasq, проверкой FakeIP, автоматическим откатом при ошибке и отдельной кнопкой ручного отката;
- локальная проверка FakeIP через DNS самого роутера без зависимости от внешнего тестового сайта; недоступные браузерные проверки при удалённом доступе или Secure DNS показываются как предупреждение, а не как поломка Podkop;
- обновление DNS-полей после применения без перезагрузки страницы и без повторного запуска завершённой операции;
- синхронизация внутреннего UCI-состояния LuCI после фонового применения, чтобы последующий ручной выбор DNS снова штатно сохранялся кнопкой применения;
- компактный центр обновлений в диагностике: проверка Podkop и патча, безопасное совместное обновление, блокировка неподдерживаемых релизов, просмотр и копирование терминального лога;
- русские строки интерфейса для добавленных элементов.
Совместимость публикуется в openwrt/update-manifest.json. Новая официальная версия Podkop становится доступна через кнопку обновления только после добавления её в supportedPodkopVersions и проверки патча на этой версии.
Текущая рекомендуемая версия — Podkop 0.7.22; также поддерживаются 0.7.19–0.7.21. Для 0.7.22 поставляется отдельный runtime, собранный после применения всего набора патчей к официальному тегу 0.7.22, поэтому исправленная upstream-проверка sing-box не заменяется старым runtime.
Если нужно применить изменения к локальному checkout Podkop:
git clone https://github.com/itdoginfo/podkop.git
git clone https://github.com/moz9/podkop-patch-subscriptions.git
cd podkop
git am ../podkop-patch-subscriptions/patches/*.patchRuntime-установка для OpenWrt использует отдельные файлы из openwrt/.