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
This commit is contained in:
33
README.md
33
README.md
@@ -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`: полный текст, метрики (лайки, репосты, просмотры), дата, язык.
|
||||
|
||||
Reference in New Issue
Block a user