Сегодня, наводя порядок в своих AWS-аккаунтах, удаляя лишние Lambda-функции и очереди, вспомнил, как несколько лет назад хакал cron-таски в AWS.
Летом 2022 года, когда записаться на шенген в Москве стало практически невозможно, но привычка ездить в Европу у жителей столицы ещё не пропала, появились всевозможные “помогаторы”. Они за деньги записывали людей в консульства на редкие свободные слоты.
Мне тоже хотелось куда-нибудь в Альпы, а ещё у меня был приличный опыт парсинга страниц. На тот момент я уже несколько месяцев ковырял сайты производителей шин, вытягивая все возможные комбинации моделей, фичей и размерностей (не спрашивайте 😅). В общем, решил, что раз уж помогаторы могут записывать людей, то и я себя записать смогу. Главное — найти самое дырявое посольство.
Небольшой ресёрч показал: проще всего пробиться к итальянцам. Я быстро разобрался, как мониторить свободные окошки, и для начала решил просто слать себе уведомления, когда они появлялись. Парсер был простым Python-скриптом, так что я развернул его в AWS Lambda и настроил запуск раз в секунду через EventBridge (читай: cron-таски, но для Lambda).
На следующий день стало ясно: окна появляются регулярно, но живут меньше секунды. Явно идёт война ботов 🤖💥.
Из чего я сделал два вывода:
1️⃣ Записывать меня тоже должен бот.
2️⃣ Мониторить слоты раз в секунду — слишком медленно.
Но как запускаться чаще, если в cron минимальная размерность — секунда?
Вспомнил, что AWS Lambda умеет триггериться при появлении сообщений в SQS, и немного доработал скрипт. Теперь перед началом парсинга он проверял, в какой доле секунды находится. Если это было до 0.75, то он слал в очередь новое сообщение с таймаутом видимости 250 мс.
В результате, если первый вызов приходился на начало секунды, скрипт отрабатывал до 4 раз в секунду. Чаще всего — действительно 4, иногда 3.
📈 Количество найденных окон увеличилось примерно вдвое. Но ненадолго.
Сначала подтянулись конкуренты. Потом и само консульство поставило защиту против таких вот “мамкиных хакеров” 😅. Но к тому моменту я уже успел податься на визу и запланировать отпуск, из которого, кстати, в Москву так и не вернулся.
А вам приходилось запускать что-то чаще, чем раз в секунду? Как решали такие задачи? 🤔
Post #123
296
- 👍 6
- 🤓 6
- ❤ 5
- 👾 2
- 🔥 1
- 👨💻 1