Привет, друзья. Сегодня я правил один простой скрипт, написанный много лет назад на PHP. В этом скрипте мне пришлось поменять способ авторизации, которая раньше производилась с помощью cURL и простого POST запроса.
В чём же собственно проблема? Почему я был вынужден отказаться от авторизации, выполняющейся с помощью простого POST-запроса на экшен auth-сервера? Всё просто. Этот сайт теперь требует у себя на входе ввода капчи. А мой скрипт не настолько умён, чтобы распознать картинку. Конечно же, подключать нейросеть для этого сайта мне совсем не хотелось, а поэтому пришлось искать небольшой хак.
Я заметил, что в своём браузере я забыл, когда в последний раз вводил логин и пароль на этом сайте. А это означает, что сайт держит крайне долго пользовательскую сессию. Исходя из этого, всё, что мне нужно — это каким-то образом один раз авторизоваться, а затем использовать эти куки в последующих заходах на сайт.
Очевидно, что я могу выполнить авторизацию на сайте с помощью обычного браузера, введя капчу руками. Но как бы мне получить нужный cookies.txt файл, который я смогу засунуть в cURL?
Меня в очередной раз спас моё верный друг — firefox. У него нашёлся плагин даже для этого случая! Речь идёт о Export Cookies. Это one-click решение, которое позволяет вам вынуть из вашего браузера все Cookies в один клик. Всё, что потом остается сделать — это удалить из полученного файла Печеньки для других сайтов (мы же сикьюрные пацаны) и закинуть этот файлик в ваш cURL.
Какой можно сделать вывод из всего этого? Наверное, лишь один. Не всегда нужно сразу хвататься за «супер инструменты», коим в данном случае могла бы стать нейронная сеть. Да, с её помощью мы бы получили более надежное решение, более идеологически правильное. Но сколько бы мы потратили времени? Нам бы пришлось спарсить кучу картинок, распознать их руками, обучить сетку, случайно переобучить сетку, повторить процесс заново. А в моём случае получилось решение за 1 минуту, которое, пускай, и ужасно нестабильное, зато работает прямо здесь и сейчас.
Категории: Программирование