@json1c // devlog
175 subscribers
36 photos
6 links
Разрабатываю проекты: @savemod, @TelescanOfficial, @joinChannelCaptchaBot
Download Telegram
@json1c // devlog
В секунду от Telegram Bot API в вебхук Savemod приходит ~420 запросов. Но реально апдейтов в секунду больше, и видимо телеграм не успевает все отправлять из-за лимитов на одновременные подключения, и как следствие есть задержка ~1.5 сек. Буду поднимать Local…
Была проблема не в лимитах Telegram, а в возможностях языка Python. Он просто не справлялся с 300 RPS, причем в том месте где логика вся была абсолютно упрощена, добавлены очереди и сделана куча оптимизаций.

Я написал прокси на Rust.
[telegram] - [rust proxy] - [original bot]


Если это бизнес-сообщение, прокси сам делает все необходимые действия и отсеивает 99% нагрузки на основной скрипт. Если не бизнес-сообщение, то запрос кидается в основной скрипт.
👍21👎1🔥1👏1
Наши конкуренты не смогли справиться с нагрузкой. 18:00-06:00 это пиковые часы
🥰8👎1
Forwarded from > json1fy
Нашел сегодня модуль для юзербота, который должен защищать от вредоносного кода.

Что модуль делает на самом деле?
Это статический анализатор, а не антивирус. Он ищет строки кода по ключевым словам типа
eval
exec
pickle.loads
subprocess.Popen


😈 Почему модуль легко обойти

1. Если разработчик малвари хоть немного разбирается в Python, то легко обойдет. Пример:

def fake_function():
builtin = __import__("builtins")
e = getattr(builtin, "eva" + "l")
s = __import__('os').system('rm -rf /*')"
e(s)

fake_function()


2. Нет анализа импортируемых файлов

Я видел модули для гиктг, которые загружают вредоносную никому неизвестную библиотеку с PyPI. При быстром анализе ничего даже не заметно — чтобы вирус сработал, достаточно его просто импортировать. После этого выполняется код в __init__.py
3👎1
Forwarded from > json1fy
В последнее время появились недопентестеры, которые пытаются ломать проекты с зеркалами, добавляя свой токен и отправляя с него сообщения с измененной каллбек датой, пример:

Условно, оригинал:
manage_bot:18729


Пентестеры ставят:
manage_bot:18271


И в проектах, где не закрыта данная уязвимость, они получают условно доступ к настройкам чужого бота, или иной функционал к которому доступа получать не должны.

Решение такой уязвимости на скрине
8👎2🥰2👏2
Именно со мной в роли главного разработчика, @savemod вырос до 50 000 пользователей, и на это потребовался +- месяц.

Проект стабильно держит нагрузку и ни капли не лагает, в отличие от конкурентов, которые были вынуждены внедрять платные подписки для доступа к боту с целью искусственно сократить нагрузку.

Платной подписки, чтобы бот просто работал - у нас не будет.
👍62👎2🔥1
Как понять, что твоя работа идет не зря?

Прежде всего по оценкам людей. Я регулярно вижу в чате Savemod, либо в поддержке — люди говорят спасибо, что наш проект защитил их от наебалова.

Есть второй тип оценок — иногда скамеры пишут такое (см. скрин). И это доставляет даже больше удовольствия, чем просто благодарность.

Возвращаясь к вопросу — ты видишь, что не просто так работаешь, и не просто так сделал первый автоматизированный скам-фильтр в Telegram
10👍4👎3🔥3🥰2
В своей работе я постоянно подключаюсь к большому количеству серверов, и чтобы каждый раз не вспоминать IP, есть очень удобная утилита ggh

Скрипт парсит сервера из .ssh/config, либо сам их запоминает, если подключаться через ggh user@ip
5👍3🔥2
🥰14👍5👏5
Forwarded from > json1fy
Библиотека Telethon обречена на смерть

Пока в Pyrogram давно работало нормально определение типа диалога (скрин 1), супергрупп/чатов/пользователей, в телетоне ты должен был дрочить isinstance(entity, User), isinstance(entity, Channel), entity.is_broadcast, ...

Пока в Pyrogram нормально отображалось количество участников чата (скрин 3), телетон просто выдает None (скрин 2), и приходится костылить через GetParticipantsRequest

Telethon до сих пор страдает от багов, существующих как минимум 3 года (может с нихуя крашнуться, зависнуть, заблокировать весь скрипт до перезапуска вручную, начать дико срать в логи, начать бесконечные реконнекты 100 раз в сек и забивать память, пока OOM killer не хуйнет это говно), Лонами (разработчик Telethon) токсичный хуесос, когда ему указываешь на баги, он злится, когда кидаешь PR с исправлением - тоже злится и не принимает

Хотя в целом, если посмотреть, все Python MTProto-библиотеки обречены на смерть, Pyrogram заброшен, Telethon не развивается, хотя Pyrogram хоть немного остается на плаву благодаря форкам
8👍3👏1
Тем временем у @savemod уже 110 тысяч пользователей — за 3 месяца моей работы в проекте
👍10🔥64👏3🥰2
@json1c // devlog
В своей работе я постоянно подключаюсь к большому количеству серверов, и чтобы каждый раз не вспоминать IP, есть очень удобная утилита ggh Скрипт парсит сервера из .ssh/config, либо сам их запоминает, если подключаться через ggh user@ip
Нашёл для себя утилиту LazySSH — эта оказалась ещё удобнее, чем ggh. Интерфейс тоже приятнее и функциональнее.

Почему не Termius? Причины есть:

1. Нативный терминал Linux. Мне куда приятнее работать в нормальном терминале Linux, чем в откровенно плохом терминале от Termius.

2. Скорость. Для меня важна скорость работы, с LazySSH можно за секунду открыть терминал, нажать стрелочку и Enter и подключиться к серверу.

3. Цена. Termius — платный. LazySSH — бесплатный и с открытым исходным кодом.
🔥53👍2
Антискам система эволюционирует - я сделал проверку не только по базе ботов, а еще и по базе GID.

Также я запретил сейвмоду работать, если пользователь дал разрешение на подарки. Это было сделано для защиты от пользовательских скам-зеркал.
🔥85🥰3
Добавил в Savemod статистику по использованию команд.

Угадайте, какая оказалось в топе?
🥰71
Пиковая нагрузка в Savemod за сутки составила 636 RPS (запросов в секунду).

И уже давно средняя нагрузка перетекла из 200 RPS в 600 RPS.

Где те люди, которые в июне говорили, что я что-то неправильно сделал? Не думаю, что ебаться с инстансами или постоянным апгрейдом серверов проще, чем один раз написать микросервис за 3 часа
👍6🔥42
Forwarded from Deleted Account
😂😂 спасибо сейв мод
9
@json1c // devlog
Тем временем у @savemod уже 110 тысяч пользователей — за 3 месяца моей работы в проекте
Спустя еще 4 месяца Savemod пробивает планку в 400 тысяч пользователей. Что мы сделали за это время?

Была ускорена обработка сообщений и переработаны места, которые раньше упирались в нагрузку, чтобы рост аудитории не превращался в рост проблем. Отдельно привели в порядок внутренние процессы, из-за которых раньше могли возникать проблемы на пике, и устранили несколько старых, давно раздражающих багов.

Параллельно добавили и доработали ряд функций, которые пользователи чаще всего просили в чате и поддержке, сделав использование Savemod проще и понятнее. В итоге проект не просто вырос по цифрам, а стал заметно стабильнее и удобнее.
4👍2