Комментарии 23
То есть вы продаете бесплатные курсы?
Быстро спиздил и ушел, называется - нашел!
Да там и с оплатой беды какие то)


Потыкался минут пять в DevTools, посмотрел стек безопасности. Делюсь по горячим следам.
Из хорошего: JSON-ы с текстом уроков (/content/<курс>/lessons/N.json) реально закрыты на бэке. 403 Forbidden, если курс не оплачен. То есть человек хотя бы какую-то проверку поставил, и на том спасибо.
Из плохого: mp4 того же самого платного урока и .vtt-субтитры лежат соседним каталогом и отдаются всем подряд статикой. Без единой проверки. Текст урока — сокровище за семью замками, а сам видеоролик — заходи кто хочешь. Логика безупречная. Блин.
Из совсем плохого: авторизация через Телеграм, user_id кладётся в cookie aa_uid. Без подписи. Конкретику блюрю, но суть простая: меняешь там одно число на чужое, и сервер радостно считает тебя владельцем чужой подписки. Telegram ID не секрет, ботов, которые резолвят username → id, гугл выдаёт пачкой. То есть для «входа под другим» нужен только ник того, кто реально занёс деньги.
Бонус-трек: paid-check.php на фронте — это вообще не проверка, а UI-декорация. В консоли пара строк, и на экране всё разлочено. Правда, как я выше писал, это даже не нужно: видео-то и так открыто.
Чинится за полдня и пару промтов:
cookie подписать HMAC'ом (или JWT, или серверная сессия), HttpOnly + Secure;
видео и субтитры отдавать через тот же gate, что и JSON-ы. А ещё лучше — signed URL с TTL минут пятнадцать;
paid-check.phpоставить как есть, он и не должен быть барьером, он только для UX.
Автор, если читаешь, приходи в личку. Дам подробности с командами и респонсами, спокойно пофиксишь до того, как кому-нибудь прилетит идея написать это же самое, но без блюра.
Это я еще не говорю о дыре в http2 которая позволяет в пару тыков потушить ваш сайт
Всегда улыбал вайбкод и слепое доверие вайбкоду
Спасибо за разбор, всё по делу. Поправил:
Cookie подписан HMAC (SHA-256). Старый aa_uid с голым Telegram ID заменен на aa_session с подписью: user_id:expiry:hmac. Флаги HttpOnly, Secure, SameSite=Lax. Подделать без серверного секрета не получится.
Видео и субтитры убрал из публичной директории. Файлы перенесены за пределы webroot, раздаются только через PHP-гейт с проверкой подписанной сессии. Для платных уроков дополнительно проверяется оплата. Range-запросы для перемотки поддерживаются.
Секреты вынесены из исходников. Пароли Robokassa и ключи авторизации больше не в коде, лежат в файлах за пределами git.
paid-check.php оставил как есть , он и не должен быть барьером, только UX, как вы и написали.
По поводу HTTP/2: если речь про Rapid Reset (CVE-2023-44487), это на стороне хостинга, тем не менее тоже переделал.
Если захотите перепроверить, буду рад!
А перевод такого количества - это не работа? Да и 900 руб - это сущие копейки.
То есть считаете, что ТС руками превёл? Ну-ну. С помощью этих же ИИ за час-два делаешь скраппер и автоперевод. Профит!
Руками только слепые переводят и какая разница как они переведены? Курсы как раз для тех, кто не знает, что такое скраппер и не умеет пользоваться автопереводом. Человек потратил 2 часа своего времени и предлагает приобрести свой результат. Добровольно, заметьте, приобрести. И за ничтожные деньги, не сопоставимые со стоимостью. Я, например, ему благодарен. Я могу это все сделать, но это займет не 2 часа (надо будет разобраться) и я лучше это время потрачу более эффективно.
Займитесь и выложите сюда же бесплатно, будем вам благодарны)
Видео идет, субтитры не появляются. Переключаю английские/русские, ничего. Браузер хром. Что делаю не так?
Жалко кармы не хватает по достоинству оценить такую сноровку. И это CTO... Греб....ый стыд.
Яндекс браузер с авто переводом уже забанили? Стыдно как-то деньги за такое брать.
Справедливый вопрос. Яндекс.Браузер переведёт страницу, если до неё добраться. Но Skilljar в России заблокирован (как и Claude в целом), а курсы закрыты за регистрацию и пошаговое прохождение. Нужно найти платформу, зарегистрироваться, пройти каждый урок по очереди, чтобы открылся следующий.
Видео там висит на YouTube, который в России тоже работает с ограничениями. Я скачал все 300+ роликов, перекодировал и залил, чтобы открывались без VPN. Субтитры перевёл отдельно, это не машинный перевод страницы.
Можно ли всё это сделать самому? Конечно! Можно и без курсов обойтись, нейронка сама расскажет, как она работает. Но этот продукт про удобство: всё собрано, переведено, структурировано в одном месте. 70% бесплатно, деньги только за оставшиеся 30%, кому нужно (а по моему опыту, до конца курсов доходят лишь единицы).
Лайфхак. Закачиваешь видео на ютуб, в яндекс-браузере включаешь синхронный перевод.

сайт у всех октрывается ?
Что-то вместо курсов другое по ссылке открывается
Можете перепроверить субтитры, много где нет
все оплачено. второй курс. не дает просмотреть не бесплатную часть, все время просит оплатить дополнительно. я так понимаю слетает регистрация, поэтому просит оплатить еще. причем это на все кроме первой части "возможности и ограничения ИИ"
самая новая инфа, там не слетает регистрация, а как будто я не оплатил, но в телеге такая надпись "вы авторизованы! Вернитесь в браузер — страница обновится автоматически."


Перевёл 16 курсов Anthropic Academy на русский и собрал платформу за выходные