diff --git a/personal/plans/flaresolverr-taiga-deploy.md b/personal/plans/flaresolverr-taiga-deploy.md index 1d36083d..bba391a6 100755 --- a/personal/plans/flaresolverr-taiga-deploy.md +++ b/personal/plans/flaresolverr-taiga-deploy.md @@ -1,17 +1,20 @@ # FlareSolverr на Тайге + обход блокировок индексеров — план/отчёт -> ✅ **СТАТУС 2026-09-29: ЗАДАЧА ЗАКРЫТА.** Prowlarr логинится на RuTracker автоматически, -> поиск отдаёт CF-индексеры. Приёмка: `search?query=radiohead&indexerIds=1` → **50 результатов**. -> `IndexerStatus` → `[]`, `health` → `[]`, 6/6 индексеров enabled. -> 🔴 **Истинная причина «не логинится»:** в Prowlarr хранится пара `mallexxx` / -> `m@n*w$uperP@$w0rD`, а все диагностические тесты шли **другим аккаунтом** (`keropjan_88`). -> Капча RuTracker — **симптом неверного пароля**, а не блокер: с верной парой логин проходит -> автоматически и без капчи. Кука авторизации — **`bb_session`** (не `bb_data`). +> 🟡 **СТАТУС 2026-09-29 (конец сессии): НЕ ЗАКРЫТА — регресс.** Prowlarr → RuTracker снова даёт **0** +> (`Invalid Credentials`, карантин `disabledTill 2026-09-28T15:47`). NoNaMe **47**, RuTor **33** — живы. +> 🔴 **Причина найдена:** FS-сессия `prowlarr` **сломана** — отдаёт 251 KB **Chrome-страницы ошибки** +> вместо форума и **пустые cookies**. Причём она **переживает `docker restart flaresolverr`**. +> Диагноз «50 результатов» был поставлен на этой же сломанной сессии и оказался ложным: +> `len≈250 KB` ≠ «залогинен». **Причина отравления сессии не установлена** — открытый вопрос. +> 🔴 **Исправление (чеклист):** `sessions.destroy prowlarr` → `DELETE FROM IndexerStatus` SQL → +> проверка **по cookies `bb_session`** и реальным `search`. Полный чеклист — +> [[personal/tech/flaresolverr-taiga]] §«ЧЕКЛИСТ "не всё зелёное"». +> 🔴 **Истинная причина исходного «не логинится»:** в Prowlarr хранится пара `mallexxx` / +> `m@n*w$uperP@$$w0rD`, а все диагностические тесты шли **другим аккаунтом** (`keropjan_88`). +> Капча RuTracker — **симптом неверного пароля**, а не блокер. Кука авторизации — **`bb_session`**. > 🔴 **Откат:** эксперимент с образом `flaresolverr-vnc` + noVNC (порт 6080, роут > `vnc.mallexxx.duckdns.org`, Caddy в `media_net`) **снесён как ненужный** — гипотеза -> «капчу решает человек» оказалась ложной. FS вернулся на штатный образ. -> ⚠️ **Пункты 6 и 7 в разделе «Остаток» ниже — УСТАРЕЛИ.** Логин RuTracker работает -> (проверено: `search?indexerIds=1` → **50 результатов**); капча-гипотеза снята. +> «капчу решает человек» оказалась ложной. FS вернулся на штатный образ. **Откат выполнен верно.** > 🔧 **Журнал отката** (что снесено, питфоллы `docker rm`/bind-mount/root-каталог) — > [[personal/tech/flaresolverr-taiga]] §«ЖУРНАЛ ОТКАТА». > Полный разбор и питфоллы — [[personal/tech/flaresolverr-taiga]]. @@ -19,13 +22,11 @@ > [[family/projects/media-toolbox-taiga]], [[family/how-to/arr-stack-kraken]], > [[personal/tech/prowlarr-flaresolverr-cloudflare]], [[family/plans/lidarr-taiga-deploy]]. > -> 🔴 **Главный питфолл:** FS-сессия `prowlarr`, созданная ДО появления `PROXY_URL`, -> навсегда остаётся без прокси → `ERR_NAME_NOT_RESOLVED` → Prowlarr пишет ложное -> «blocked by CloudFlare». Лечится `sessions.destroy` сессии `prowlarr` — пересоздаётся сама. -> 🔴 **Второй питфолл:** `POST /indexer/test` карантин **НЕ снимает, а продлевает**. -> Карантин живёт в таблице `IndexerStatus` и снимается **только SQL** (`DELETE FROM IndexerStatus`). -> 🔴 **Порядок диагностики «Auth Failed»:** сначала сверить пару логин/пароль из -> `prowlarr.db` (`SELECT Settings FROM Indexers WHERE Id=1`), и только потом всё остальное. +> 🔴 **Питфолл №1:** FS-сессия может быть «отравлена» — `sessions.list` + `sessions.destroy`. +> 🔴 **Питфолл №2:** `POST /indexer/test` карантин **НЕ снимает, а продлевает**. +> Карантин живёт в `IndexerStatus` и снимается **только SQL** (`DELETE FROM IndexerStatus`). +> 🔴 **Порядок диагностики «Auth Failed»:** (1) `sessions.list` → убить сессию; (2) cookies → есть ли +> `bb_session`; (3) пара логин/пароль из `prowlarr.db`; (4) `IndexerStatus`. **Не по длине HTML!** ## ФАКТИЧЕСКОЕ СОСТОЯНИЕ (2026-09-28, после деплоя) diff --git a/personal/tech/flaresolverr-taiga.md b/personal/tech/flaresolverr-taiga.md index afe9cc84..64db6575 100755 --- a/personal/tech/flaresolverr-taiga.md +++ b/personal/tech/flaresolverr-taiga.md @@ -1,13 +1,63 @@ # FlareSolverr на Тайге + обход блокировок индексеров -> 🟢 **СОСТОЯНИЕ 2026-09-29: всё работает.** Prowlarr логинится в RuTracker сам, поиск отдаёт результаты. -> Проверено: `search?query=radiohead` → RuTracker **50**, NoNaMe **47**, RuTor **33**. -> `indexerstatus` → `[]`, `health` → `[]`. +> 🟡 **СОСТОЯНИЕ 2026-09-29 (конец сессии): FS настроен верно, НО RuTracker снова упал в 0.** +> Поиск: `search?query=radiohead` → RuTracker **0** ❌, NoNaMe **47** ✅, RuTor **33** ✅. +> Причина падения найдена — **сломанная сессия `prowlarr`** (см. раздел «ДВЕ ЛОВУШКИ ДИАГНОСТИКИ»). +> `IndexerStatus` содержит RuTracker (`disabledTill 2026-09-28T15:47`). +> Health: Prowlarr 1 warning (RuTor), Radarr 1, Sonarr 2, Lidarr 2 — все про RuTracker/Kinozal/RuTor. > Контейнер `flaresolverr` — штатный образ, `PROXY_URL=socks5://vless-proxy:1080`, порт `8191`, сеть `media_net`, > `shm_size: 1gb`, `LOG_LEVEL=warning`. Compose: `/mnt/RED_2TB/docker/arr/docker-compose.yml`. > Связка: [[family/projects/media-toolbox-taiga]], [[family/plans/lidarr-taiga-deploy]], > [[personal/tech/prowlarr-flaresolverr-cloudflare]], [[family/how-to/arr-stack-kraken]]. +## 🔴🔴 ДВЕ ЛОВУШКИ ДИАГНОСТИКИ (главное этой сессии) + +Обе стоили часов и обе — про то, что **артефакт врёт**, если смотреть не то поле. + +### Ловушка 1: `len≈250 KB` ≠ «залогинен». Это может быть Chrome-страница ОШИБКИ + +Прошлый вывод «~250 KB = залогиненный форум» **опровергнут**. В сломанной сессии 251 792 байта — +это **встроенная страница ошибки Chromium**, а не форум: + +```html + +rutracker.org + +``` + +Диагностические маркеры в такой странице: `logged-in=0`, `logout=0`, `IS_GUEST=0/1` — **ни одного**, +`cap_code=0`, `неверное/неактивное=0`, `challenge-platform=0`. То есть **судить по размеру нельзя**. + +🔴 **Правильный признак «залогинен» — наличие cookies, а не длина HTML:** + +| Проверка | Залогинен | Не залогинен | +|---|---|---| +| `solution.cookies` | есть **`bb_session`** ✅ | пусто / только `cf_clearance`+`bb_guid` | +| Маркер в HTML | `IS_GUEST: !!'0'` | нет ни одного маркера | +| `len` | **~105 KB** (свежая сессия) | 13 KB форма / 251 KB ошибка Chrome | + +> ⚠️ **Всегда проверять `solution.cookies[].name` — наличие `bb_session` единственный надёжный признак.** +> Замеры одной сессии: сессия `prowlarr` → `len=251792, cookies=[]` (ошибка); +> свежая `cmp-fresh` → `len=105507, cookies=[bb_session, bb_ssl, bb_guid, cf_clearance]` ✅. + +### Ловушка 2: сессия FS может быть «отравлена» и переживает рестарт FS + +Сессия `prowlarr` залипла в сломанном Chrome: **любой** запрос через неё возвращает 251 KB +страницы ошибки и **пустые cookies**. При этом: +- `sessions.list` показывает её живой; +- она **переживает `docker restart flaresolverr`** (наблюдалось: жила 2 часа через рестарты); +- Prowlarr получает `Empty cookies returned` → `RuTracker Auth Failed` → карантин. + +``` +сессия prowlarr (сломанная): POST login → len=251792, cookies=ПУСТЫЕ ❌ +свежая сессия: POST login → len=105507, cookies=[bb_session...] ✅ +``` + +🔴 **Диагностика обязана включать `sessions.list` + убийство сессии `prowlarr`.** Именно это +снимает дефект — Prowlarr пересоздаёт сессию чистой при следующем запросе. + +--- + ## 🔴 ПРИЧИНА ВСЕХ ПРОБЛЕМ: путаница аккаунтов (не капча, не прокси, не CF) Долгая диагностика упиралась в «капчу RuTracker» — **причины такой не было**. @@ -18,7 +68,7 @@ Prowlarr: username = mallexxx password = m@n*w$uperP@$$w0rD ``` RuTracker на неверный пароль отвечает **формой логина + капчей**. Отсюда ложный вывод «капча блокирует». -С правильными данными Prowlarr логинится **без капчи**: `len=251 792`, `wrong_password=0`. +С правильными данными Prowlarr логинится **без капчи**. > 🔴 **Прежде чем диагностировать капчу/CF/прокси — сверить пару логин/пароль в Prowlarr:** > ```bash @@ -129,22 +179,31 @@ CF-индексеры получают **оба** тега: `tags=[1,2]`. RuTor/ - `shm_size`/`sysctls` — в блок сервиса compose, не в `environment`. - Порт `8191` с Mac наружу **не проброшен** — скрипты запускать на хосте Тайги (`scp` + `ssh python3`). -## ⚠️ ПИТФОЛЛ: `Auth Failed` ≠ неверный пароль +## ⚠️ ПИТФОЛЛ: `Auth Failed` — порядок диагностики (обновлён 2026-09-29) -`RuTracker Auth Failed` в Prowlarr **не доказывает** неверный пароль (см. главный раздел — причина была -в чужом аккаунте). Диагностический порядок: -1. `request.post` на `/forum/login.php` **с `session=prowlarr`** → судить по **длине** HTML. -2. Если `~13 KB` — смотреть `IndexerStatus` в БД (может быть карантин, а не пароль). -3. Только потом — вопрос к паре логин/пароль. +`RuTracker Auth Failed` / `Invalid Credentials` в Prowlarr имеет **три разные причины**, и +симптом у них одинаковый. Проверять **строго в этом порядке**: -🔴 **Признак «залогинен» — РАЗМЕР страницы, а не подстрока:** -| `len` HTML | Что это | -|---|---| -| **~250 KB** | залогиненный форум ✅ | -| **~13 KB** | форма логина вернулась ❌ | +| # | Проверка | Признак причины | +|---|---|---| +| 1 | `sessions.list` → есть ли сессия `prowlarr`, и что она отдаёт | сессия «отравлена» → **убить её** | +| 2 | `solution.cookies` после логина | нет **`bb_session`** → логин не прошёл | +| 3 | `SELECT Settings FROM Indexers WHERE Id=1` в `prowlarr.db` | пара логин/пароль не та, что в тесте | +| 4 | `IndexerStatus` в БД | есть запись → карантин (снимать SQL, не тестом) | -⚠️ Подстрока `login_username` присутствует **в обоих** случаях (HTML-шаблон + скрытая форма быстрого -входа). По ней диагноз ставить нельзя — именно это давало ложное «пароль неверен». +🔴 **НИКОГДА не судить о логине по длине HTML.** Ранее в этом доке было записано +«~250 KB = залогинен, ~13 KB = форма» — **это неверно** (см. «ДВЕ ЛОВУШКИ ДИАГНОСТИКИ»): +250 KB бывает страницей ошибки Chrome, а залогиненная свежая сессия даёт ~105 KB. + +```bash +# Правильная проверка логина — по cookies +curl -s --max-time 220 -X POST http://localhost:8191/v1 -H "Content-Type: application/json" \ + -d '{"cmd":"request.post","url":"https://rutracker.org/forum/login.php", + "session":"prowlarr", + "postData":"login_username=&login_password=

&login=%D0%92%D1%85%D0%BE%D0%B4", + "maxTimeout":200000}' | jq -r '.solution.cookies[].name' +# видим bb_session → залогинен. Пусто → сессия сломана, убить и повторить. +``` ## ⚠️ Кэш health в arr-сервисах @@ -188,17 +247,56 @@ CF-индексеры получают **оба** тега: `tags=[1,2]`. RuTor/ > ⚠️ У FS **нет** persistent-профиля Chrome: он живёт в контейнере и умирает при пересоздании. > Это **не проблема** — FS логинится в RuTracker при каждом старте без капчи. -## Состояние индексеров (2026-09-29) +## Состояние индексеров (2026-09-29, конец сессии) | id | Индексер | Теги | Поиск | |---|---|---|---| -| 1 | RuTracker | `[1,2]` | ✅ 50 | +| 1 | RuTracker | `[1,2]` | ❌ **0** — сессия `prowlarr` сломана, в карантине | | 2 | RuTor | `[1]` | ✅ 33 | | 3 | Byrutor | `[1]` | — | | 4 | NoNaMe Club | `[1,2]` | ✅ 47 | | 5 | Kinozal | `[1,2]` | ⚠️ CF, периодически в карантине | | 6 | Kinozal (M) | `[1,2]` | ⚠️ зеркало Kinozal (5) | +**Health по сервисам (2026-09-29):** +``` +Prowlarr 1 warning RuTor (no results in categories — дефект трекера) +Radarr 1 warning RuTracker unavailable > 6 hours +Sonarr 2 warning RuTracker + RuTor +Lidarr 2 warning RuTracker + Kinozal (M) +``` + +## 🔴 ЧЕКЛИСТ «не всё зелёное» (восстановление RuTracker) + +Когда RuTracker даёт 0, а FS жив — выполнить **в этом порядке**: + +```bash +# 1. Убить сессии FS (главный шаг — сессия переживает рестарт FS!) +for S in prowlarr cmp-fresh; do + curl -s --max-time 60 -X POST http://localhost:8191/v1 \ + -H "Content-Type: application/json" \ + -d "{\"cmd\":\"sessions.destroy\",\"session\":\"$S\"}" -o /dev/null +done +curl -s -X POST http://localhost:8191/v1 -H "Content-Type: application/json" \ + -d '{"cmd":"sessions.list"}' # → sessions: [] (ждём пусто) + +# 2. Снять карантин SQL (тест его ПРОДЛЕВАЕТ, не снимает) +DB=/mnt/RED_2TB/docker/arr/prowlarr/prowlarr.db +docker stop prowlarr +sqlite3 "$DB" "DELETE FROM IndexerStatus;" +docker start prowlarr && sleep 20 + +# 3. ПРИЁМКА — реальный поиск (НЕ caps, НЕ health) +PK=$(grep -o "[^<]*" /mnt/RED_2TB/docker/arr/prowlarr/config.xml | cut -d">" -f2) +curl -s --max-time 150 "http://localhost:9696/api/v1/search?query=radiohead&type=search&indexerIds=1" \ + -H "X-Api-Key: $PK" | python3 -c "import json,sys; print(len(json.load(sys.stdin)))" +# ждём > 0 +``` + +> ⚠️ **Переживёт ли reboot:** `IndexerStatus` и сломанная сессия **переживают** — без шагов 1–2 +> после перезагрузки RuTracker останется в 0. Сессия живёт в памяти FS и **выдерживает +> `docker restart flaresolverr`**. + ## 🔴 Чего НЕ делать (проверено, не работает) | Идея | Почему нет | @@ -264,10 +362,13 @@ docker network disconnect media_net caddy ``` API FS: {"status":"ok","version":"3.5.2"} -Логин (session=prowlarr): len=251792 (залогиненный форум ~250KB), wrong_password=0 -indexerstatus: [] -search: idx1=50 idx2=33 idx4=47 idx5=EMPTY idx6=0 +indexerstatus: [] ← сразу после снятия карантина +search: idx1=50 idx2=33 idx4=47 idx5=EMPTY idx6=0 ← НА МОМЕНТ ОТКАТА ``` +⚠️ Через ~2 часа `idx1` упал в **0** — сессия `prowlarr` сломалась. `len=251792` тогда был принят +за «залогиненный форум», но это **Chrome-страница ошибки**. См. «ДВЕ ЛОВУШКИ ДИАГНОСТИКИ». -**Вывод сессии:** FS корректно работает на штатном образе с `PROXY_URL`. Persistent-профиль, -noVNC и капча-солвер — **не нужны**. Prowlarr логинится сам. +**Вывод сессии:** откат выполнен верно (FS на штатном образе, `PROXY_URL`, noVNC/капча-солвер +снесены как ненужные). Но **логин RuTracker нестабилен**: сессия FS `prowlarr` периодически +«отравляется» и переживает рестарт FS — лечится `sessions.destroy` + снятие карантина SQL. +**Причина отравления не установлена** — открытый вопрос для следующей сессии.