feat(tg): реальные абузы из Telegram без сессии — адаптер tg_web переписан (служебное/пустыши отсекаются, заголовок из тела, порог 12/8 для leak-каналов), 19 живых каналов из 87 проверенных, сигнал абуза в score (+до 1.8), tools/tg_discover.py, tools/fixtg.py, tools/purge_tg_junk.py, tools/rescore.py; реестр 869, база 7295 (ab_ 3135, tg_ 374); тесты 19
Some checks failed
ci / test (3.10) (push) Has been cancelled
ci / test (3.11) (push) Has been cancelled
ci / test (3.12) (push) Has been cancelled

This commit is contained in:
Vlad Gothbreach
2026-10-26 21:06:50 +03:00
parent f9719b9149
commit eaedd37bcd
11 changed files with 414 additions and 22 deletions

View File

@@ -24,7 +24,7 @@ python -m omni.bot
## Состояние на сейчас
- **источников: 853** в 11 категориях (662 базовых + 191 из реестра абузов, дубли вырезаны), **записей в базе: 5596** (224 с ценой, 121 прогон)
- **источников: 869** в 11 категориях (662 базовых + 207 из реестра абузов + 19 Telegram-каналов, дубли вырезаны), **записей в базе: 7295** (251 с ценой, 120 прогонов), из них 3135 из реестра абузов и 374 из Telegram-каналов
- **типы записей: 14** — каждая запись размечена по смыслу: новость 3693 · софт 516 · уязвимость 402 · релиз 361 · модель 331 · вопрос 265 · цена 205 · гайд 194 · датасет 126 · слив 90 · триал 41 · промо 34 · вакансия 21 · перепродажа 10
- **X/Twitter: 30 аккаунтов** читаются без API-ключей через `api.fxtwitter.com` (313 твитов в базе)
- вкладки панели: `Лента` · `Источники` · `Прогоны` · `Абузы`; полоса чипов «тип», фильтр «только с ценой», сортировка `score/fresh/price`, экспорт CSV
@@ -78,6 +78,15 @@ python -m omni serve --port 8077
## Что было сломано и что стало (по ревью)
Отдельный заход по Telegram: адаптер `tg_web` тянул в базу `Channel created`,
`Channel photo updated` и посты из одной ссылки — 150 мусорных записей из 285.
После переписывания: 0 служебных, заголовки из тела поста
(`СЛИВ: 1300+ АККАУНТОВ ДЛЯ ВАС!` вместо `🛑`); чистка старых — `tools/purge_tg_junk.py --apply`,
обновление заголовков без перезаписи базы — `tools/fixtg.py`.
Скор получил сигнал абуза (`omni/rank.py`, `ABUSE_TERMS`): утечки, CVE, эксплойты, комбо-листы,
сливы ключей и аккаунтов дают до +1.8 — топ базы теперь инциденты, а не релизы.
Пересчёт существующих записей — `tools/rescore.py --apply`.
Замеры сняты на этой машине, до и после правок. Скепсис к ревью тоже был: два пункта не подтвердились, они отмечены.
| пункт | было | стало |
@@ -189,6 +198,28 @@ API: `GET /api/stats`, `GET /api/items?category=&q=&limit=&offset=`, `GET /api/s
Правила лежат в `omni/taxonomy.py`: взвешенные RU/EN-паттерны, порог по весу, чтобы «free» в рекламе не превращалось в «триал».
## Telegram-каналы: реальные абузы без сессии
Публичное веб-превью `t.me/s/<канал>` — ни Telethon, ни api_id, ни токена бота.
Адаптер `tg_web` берёт `div.tgme_widget_message_text`, режет служебное
(`Channel created`, `Channel photo updated`, `pinned`), пустыши и посты из одной ссылки,
заголовок собирает из первой содержательной строки, дату — из `time[datetime]`, просмотры — из
`tgme_widget_message_views`. Для каналов с тегом `leak` порог ниже: они пишут коротко
(«<домен> 2M users»), и раньше такие посты отбрасывались как мусор.
Проверка каналов — `python tools/tg_discover.py --file data/tg_cand.txt --min 2`:
печатает по каждому статус, сколько постов даёт парсер и сколько из них новые.
Из 87 проверенных каналов живых 19; выкинуты те, у кого превью пустое
(`leakbase`, `abuse_ch`, `cracked_io`, `ai_zona`, `gpt_bot_news`, `codeby` — только
`Channel created` и инвайт-ссылки).
Живые: `thehackernews`, `bleepingcomputer`, `cvefeed`, `vulnwatch`, `ransomware_news`,
`breachradar`, `poc_in_github`, `hunt_news`, `vxunderground`, `true_secator`, `infosec_ru`,
`xakep_ru`, `prompt_injection`, `ai_newz`, `neurohive`, `neuralshit`, `seeallochnaya`,
`ai_free_ru`, `ai_products`, `addmetana`, `alstack`.
Один прогон этих каналов: 324 поста, 0 пустых источников.
## X / Twitter без ключей
- `omni/providers/x.py` → `profile(handle)` тянет ленту через `api.fxtwitter.com/2/profile/<handle>/statuses`: полный текст, метрики (лайки, репосты, просмотры), дата, язык.