mirror of
https://github.com/werwolfby/monitorrent.git
synced 2026-10-14 21:39:03 +00:00
[GH-ISSUE #422] kinozal.tv разделегирован? #328
Labels
No labels
bug
docs
duplicate
enhancement
Epic
feature
feature
future
help wanted
in progress
need more info
plugin
proxy
pull-request
python 2
python 3
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
werwolfby/monitorrent#328
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @zalessky on GitHub (Jul 16, 2026).
Original GitHub issue: https://github.com/werwolfby/monitorrent/issues/422
Перестал резолвиться kinozal.tv
Зеркала https://kinozal.guru и https://kinozal.me вполне себе работают.
Переписал плагин - теперь позволяет прописывать в настройках другие зеркала.
kinozal.py
@Grosses84 commented on GitHub (Jul 20, 2026):
Работает, спасибо:)
@zalessky commented on GitHub (Sep 3, 2026):
kinozal.py свежие обновы
@a-flash commented on GitHub (Sep 11, 2026):
Спасибо за обновления исправлений. Все работало неделю назад. Сейчас видимо тоже за cloudflare спрятались, и me и guru. Уже добавленные раздачи работают, а вот новые не добавляет :(
@RU2026 commented on GitHub (Sep 14, 2026):
Добавь пожалуйста ещё kinozal.jumpingcrab.com
@zalessky commented on GitHub (Sep 14, 2026):
kinozal.py
kinozal.jumpingcrab.com добавил. не забудьте обновить списки обходов
капчу CF обходить муторно. попробовал что-то навайбкодить. но отлаживать некогда. тестируйте, пишите как работает
@RU2026 commented on GitHub (Sep 15, 2026):
Всё отлично работает, спасибо!
@zalessky commented on GitHub (Sep 18, 2026):
<html> <html><head></head>monitorrent + kinozal за Cloudflare
Плагин
kinozal.pyдля monitorrent, работающий с зеркалами kinozal, закрытыми защитой Cloudflare Turnstile, и инструкция, как всё это развернуть.Проблема
Осенью 2026 зеркала
kinozal.meиkinozal.guruвстали за Cloudflare Turnstile. Штатный плагин monitorrent получает от них403со страницей «Just a moment…» и не может ни проверить обновление раздачи, ни скачать торрент-файл. Зеркала без защиты (jumpingcrab.com,cloudns.nz) отвечают429 Too Many Requests— они маленькие и быстро упираются в свой лимит.Что не сработало
Проверено на практике, чтобы вы не тратили время:
В логах Byparr в норме тишина и редкие
Challenge detected→Clicked the challenge checkbox→Done.Ограничения
.torrentвыполняет сам движок monitorrent своим кодом, мимо curl_cffi. Пока проходит за счёт куки и User-Agent от солвера, но это слабое место: если проверка обновлений работает, а скачивание отдаёт 403 — причина здесь.Благодарности
- werwolfby/monitorrent
- thephaseless/Byparr
- lexiforest/curl_cffi
</html> </html># monitorrent + kinozal за CloudflareПлагин
kinozal.pyдля [monitorrent](https://github.com/werwolfby/monitorrent),работающий с зеркалами kinozal, закрытыми защитой Cloudflare Turnstile,
и инструкция, как всё это развернуть.
Проблема
Осенью 2026 зеркала
kinozal.meиkinozal.guruвстали за CloudflareTurnstile. Штатный плагин monitorrent получает от них
403со страницей«Just a moment…» и не может ни проверить обновление раздачи, ни скачать
торрент-файл. Зеркала без защиты (
jumpingcrab.com,cloudns.nz)отвечают
429 Too Many Requests— они маленькие и быстро упираютсяв свой лимит.
Что не сработало
Проверено на практике, чтобы вы не тратили время:
cloudscrapercf_clearanceиз своего браузераdetails.phpотдаёт форму входа.request.postк Byparr (логин через солвер)takelogin.phpне принимает данные формы из query string.Что работает
Роли разделены:
cf_clearance.Дёргается редко — только когда куку отвергли.
которая повторяет TLS-рукопожатие настоящего браузера. Отпечаток
совпадает с браузером солвера, и кука принимается.
страницы приходят нормальные, а не гостевые.
Профиль TLS подбирается автоматически под User-Agent, который вернул
солвер. Это важно: если отпечаток будет от одной версии браузера, а
User-Agent от другой, Cloudflare сочтёт это рассогласованием и снова
покажет проверку.
В установившемся режиме браузер запускается раз в несколько часов,
всё остальное время идут обычные быстрые HTTP-запросы.
Что понадобится
Файлы из этого репозитория:
kinozal.pyDockerfilecurl_cffi.docker-compose.ymlШаг 1. Каталоги и файлы
Выберите каталог, где будут лежать база и плагин. Он может быть любым,
главное — постоянным. Типичный выбор:
/mnt/user/appdata/monitorrent/volume1/docker/monitorrent/opt/monitorrentили/srv/monitorrentДальше по тексту используется
/srv/monitorrent— подставляйте свой.Положите файлы:
kinozal.py→/srv/monitorrent/plugins/kinozal.pyDockerfile→/srv/monitorrent/build/Dockerfiledocker-compose.yml→/srv/monitorrent/(или вставьте его текстпрямо в редактор стека Portainer)
Если monitorrent у вас уже работает — не создавайте новую базу.
Найдите, где лежит текущая
monitorrent.db, и укажите в compose именноэтот каталог, иначе потеряете список раздач.
Шаг 2. Образ с curl_cffi
curl_cffi— обычный пакет с PyPI, в штатном образе monitorrent егонет. Готового образа с ним нигде не опубликовано, поэтому нужно один
раз собрать свой. Есть два способа.
Способ А: собрать по Dockerfile (рекомендуется)
Весь
Dockerfile— это две строки: взять официальный образ и доставитьв него пакет.
Флаг
--no-cacheважен: без него Docker может подставить слой отпредыдущей сборки, и пакет молча не установится.
Проверка:
Должен напечатать номер версии. Если вместо этого
ModuleNotFoundError—пересоберите, убедившись, что
--no-cacheна месте.Способ Б: доустановить в работающий контейнер и зафиксировать
Годится, если собирать образ неудобно. Сначала запустите штатный
monitorrent (или используйте уже работающий), затем:
После этого в
docker-compose.ymlостанетсяimage: monitorrent-cffi:latest,и при пересоздании контейнера пакет никуда не денется.
Важно понимать разницу:
docker exec ... pip installсам по себеживёт только до пересоздания контейнера. Именно
docker commit(или сборка по Dockerfile) делает изменение постоянным. Если пропустить
второй шаг, после ближайшего обновления стека всё вернётся к исходному
состоянию и в логах появится
'curl_cffi' is not installed.Шаг 3. Правка docker-compose.yml
Откройте файл и замените пути в разделах
volumesна свои. Менять нужнотолько то, что слева от двоеточия — правая часть это путь внутри
контейнера, он фиксированный:
Если порт 6687 на хосте занят, поменяйте левое число:
"8687:6687/tcp".Если у вас подменены и другие плагины (например
lostfilm.py),добавьте для них такие же строки.
Шаг 4. Запуск
Из командной строки:
Или через Portainer: Stacks → Add stack → Web editor, вставить
содержимое
docker-compose.yml, нажать Deploy the stack.Byparr при первом старте скачивает браузер — это несколько минут.
Дождитесь готовности:
Проверьте, что monitorrent видит солвер:
Ожидаемый ответ —
ok.Шаг 5. Настройка плагина
Откройте
http://<адрес-сервера>:6687→ Settings → Trackers →kinozal.tv:
https://и без завершающего слэша,например
kinozal.guru.Нажмите Save, затем Check. Должно появиться
Connection successful.Домен зеркала хранится отдельно от ссылок на раздачи: когда kinozal
переедет на новый адрес, достаточно поменять одно это поле — все
сохранённые раздачи продолжат работать, даже если в их ссылках стоит
старый домен.
Как обновить плагин потом
Если плагин подключён томом (как в
docker-compose.ymlвыше), достаточнозаменить файл и перезапустить контейнер:
Если тома нет и нужно положить файл внутрь разово:
Учтите: скопированный так файл исчезнет при пересоздании контейнера.
Для постоянной работы лучше подключить том.
Проверить, какая версия сейчас в контейнере:
Суммы должны совпасть.
Переменные окружения
KINOZAL_BYPARR_URLhttp://byparr:8191/v1. Без неё плагин работает в прямом режиме — годится для зеркал без защиты.KINOZAL_REQUEST_TIMEOUT_SEC45KINOZAL_IMPERSONATEcurl_cffi. Задавайте вручную, только если автоподбор ошибается — и сверьтесь со списком своей версии библиотеки.KINOZAL_CHALLENGE_COOLDOWN_SEC1800KINOZAL_SOLVER_CACHE_TTL_SEC90Про Unraid
В
docker-compose.ymlу обоих сервисов есть метки:[IP]и[PORT:6687]— не заготовки, которые нужно заполнитьруками. Это синтаксис самого Unraid: он подставит туда адрес сервера
и фактический порт. Оставьте строки как есть.
Метки нужны, чтобы контейнеры появились в списке Docker в веб-интерфейсе
Unraid с работающей ссылкой на интерфейс. Надёжнее всего это работает,
если стек развёрнут через плагин Compose Manager (Apps → Compose
Manager). Контейнеры, созданные через Portainer, Unraid показывает
не всегда.
На других системах метки просто игнорируются.
Диагностика
using curl_cffi with browser TLS impersonation'curl_cffi' is not installeddocker commit.matching TLS impersonation profile to the solver's browsercf_clearance rejected, refreshing it via solverCloudflare challenge page receivedtimed out ... 0 bytes receivedKINOZAL_REQUEST_TIMEOUT_SEC.mirror domain is empty or invalidTLS impersonation profile is not supported by the installed curl_cffi'mn1_menu' block not found+ заголовок страницы без слова «Вход»'mn1_menu' block not found+ заголовок «Вход»В логах Byparr в норме тишина и редкие
Challenge detected→Clicked the challenge checkbox→Done.Ограничения
.torrentвыполняет сам движок monitorrent своим кодом,мимо curl_cffi. Пока проходит за счёт куки и User-Agent от солвера,
но это слабое место: если проверка обновлений работает, а скачивание
отдаёт 403 — причина здесь.
об этом честно предупреждает.
в очередь; не направляйте туда параллельно другие приложения.
Обхода авторизации здесь нет.
Благодарности
kinozal.py
Dockerfile.yml
(убрать .yml - иначе гитхаб не позволяет залить файл)
docker-compose.yml
P.S. Проверьте, достаточно ли подробно и понятно написана инструкция.Вдруг, какой-нибудь шаг может оказаться неочевидным
Видел, что lostfilm тоже спрятался за CF - уверен, найденное решение и там поможет, но у меня нет там раздач активных, тестировать особо не на чем.
P.P.S. Судя по всему, автор свовсем охладел к проекту и забросил его. Много осталось пользователей? Есть смысл форкать и продолжать поддерживать его или все уже перешли на онлайн просмотр через лампу и торсерв?
@Grosses84 commented on GitHub (Sep 23, 2026):
Ну ты мощЬ! Так подробно всё описал, к сожалению это не мой случай. У меня монитор запущен из под винды:(
@zalessky commented on GitHub (Sep 23, 2026):
Установка без Docker (Windows, Linux)
Если monitorrent у вас запускается напрямую, а не в контейнере,
нужно сделать две вещи: доставить пакет
curl_cffiв тот Python,которым работает monitorrent, и где-то поднять Byparr.
1. curl_cffi
Сначала выясните, какой именно Python запускает monitorrent —
у многих в системе их несколько, и пакет легко поставить не туда.
Linux:
Windows (PowerShell или cmd):
Если у monitorrent своё окружение, используйте его:
C:\path\to\monitorrent\venv\Scripts\python.exe -m pip install curl_cffi.Здесь у вас преимущество перед Docker-установкой. В официальном
образе monitorrent Python 3.9, а
curl_cffiновее 0.13.0 под него несобирается — потолок имитации Firefox 135. Если ваш Python 3.10 или
новее, установится 0.16.x с профилями свежих Firefox, и отпечаток
сойдётся с браузером Byparr гораздо точнее. Проверить:
2. Byparr
Byparr распространяется как контейнер, собственной установки под
Windows или Linux у него нет. Вариантов три:
Docker только для Byparr. Сам monitorrent остаётся как есть,
рядом ставится Docker (на Windows — Docker Desktop) и запускается
один контейнер:
Byparr на другой машине в сети — например, на домашнем сервере
или NAS. Тогда в адресе укажете её IP вместо
localhost.Без Byparr вообще. Если вы работаете с зеркалом без защиты
Cloudflare, солвер не нужен: не задавайте переменную
KINOZAL_BYPARR_URL, и плагин будет ходить напрямую.Проверка готовности:
3. Переменные окружения
Плагин настраивается переменными окружения (список — в основном
разделе README). Задать их надо так, чтобы их видел процесс
monitorrent.
Linux, запуск вручную:
Linux, systemd — в unit-файле службы:
после правки:
systemctl daemon-reload && systemctl restart monitorrentWindows — либо через «Система → Дополнительные параметры системы →
Переменные среды» (нужен перезапуск monitorrent), либо bat-файлом
запуска:
Учтите:
setxзадаёт переменную только для новых процессов, текущееокно её не увидит.
4. Плагин
Положите
kinozal.pyв каталог трекеров, заменив штатный:/path/to/monitorrent/monitorrent/plugins/trackers/kinozal.pyC:\path\to\monitorrent\monitorrent\plugins\trackers\kinozal.pyИсходный файл лучше сохранить (
kinozal.py.bak), чтобы было кудаоткатиться. После замены перезапустите monitorrent.
Проверка, что всё сошлось — в логе при первом запросе к трекеру должна
появиться строка
using curl_cffi with browser TLS impersonation.