Как я заставил Нейросеть написать рабочий код для решения Waf Амазон капчи не имея опыта в разработке
Наверное ни для кого не секрет, что нейросети сейчас обложены со всех сторон правилами и запретами и заставить ее написать для тебя скрипт, который будет обходить капчу с нуля просто нереально. По крайней мере я так думал, до этого дня.
Небольшой эпиграф — если в инструкции — как решить Амазон капчу джун может ногу сломить — можно вместо навыка Гугления применить навык — «спросить нейросеть».
Да, времена поменялись, и очень стремительно, теперь чтобы получить работающий код не обязательно унижаться на Стаке, выслушивая какое ты ничтожество, и уже не нужно прикидываться девушкой разработчиком, чтобы получить ответы на свои вопросы. Если уметь правильно их задавать. вы можете получить ответы у Нейросети.
Собственно к чему все это? Да к тому, что когда мне потребовалось решить капчу от Амазон, пресловутую Waf Captcha я пошел копать на сервис, которым постоянно пользуюсь при работе с Кей Коллектором, и некоторыми другими сервисами (Рукапча).
Ну и нашел там инструкцию, ссылку на которую собственно и привел выше. Как вам вероятно стало понятно из эпиграфа — для меня инструкция оказалось сложна для восприятия, вернее я понял, что надо использовать АПИ, но на этом все…
С Селениумом было реально проще.
Главная проблема при распознавании Waf Amazon captcha — малый таймаут, который выделяется на решение со стороны Амазона. Время на решение капчи ограничено и если ответа нет, то капча обновляется (у нее обновляются 2 параметра — iv и context).
Получается, что время жизни капчи ограничено примерно 30 секундами, в течение которых нужно успеть найти параметры на веб-странице, скопировать их, вставить в скрипт и запустить его, чтобы сервис 2капча мог решить капчу и вернуть корректный ответ. Я пытался справиться с этой задачей в течение пары часов, пытаясь выработать быстроту действий, но, к сожалению, на поиск и замену изменяемых параметров уходит не меньше 12-15 секунд. Таким образом, остается лишь 15-18 секунд на решение капчи сервисом, что для Амазон капчи кажется довольно нереалистичным.
Здесь требуется другая стратегия: поиск и вставка параметров должны выполняться автоматически скриптом. Однако, как человеку, который не сталкивался с чем-то более сложным, чем Ahrefs, написать такой скрипт?
Именно поэтому, на мой взгляд, инструкции, должны быть более детализированными, а не сводиться к фразам вроде "Просто используй API, разве ты не понимаешь?".
Решение было найдено мной за примерно три часа. И вот как новичку можно автоматизировать решение Amazon капчи.
Для этого нам потребуется GPT Chat и, в моем случае, это была премиум версия, так как она умеет изучать картинки (скриншоты) и собственно какая то инструкция по решению капчи в текстовом или видео формате.
Инструкции я не нашел, но нашел короткое видео, в котором показан процесс распознавания капчи Амазон на полном автомате, и все. Никакого пояснения и тем более текстового описания у меня не было.
Я получил видео от знакомого программиста, который запретил его публиковать, поскольку оно не анонимизировано. И, к слову, времени объяснить мне принцип работы скрипта, показанного на видео, у него тоже не было, поэтому и родился этот текст.
Давайте разберемся по порядку:
Я взял видео, сделал три скриншота и загрузил их в GPT Chat, попросив его преобразовать эти скриншоты в текстовый код.
На видео было видно, что в папке содержится несколько файлов, но показано содержимое только двух — index. js и inject. js. С них я и начал.
Чтобы не утомлять вас как именно я собирал код из скриншотов (пришлось немного повозиться, чтобы собрать код в единое целое), я покажу уже готовый код, который Чат собрал из разных кусочков:
Естественно, я уточнил у Чата, как мне заставить код работать, на что получил рекомендацию использовать стандартную команду
Но я же в этих ваших интернетах уже очень долго и понимаю, что код просто так не заработает, если на компе не установленно нужных библиотек, мой нейроконсультант и тут мне помог
Изучив код, который я дал ему в виде скриншотов, он порекомендовал установить следующие пакеты
Единственно, я не совсем понял, нафига тут нужен playwright, но кто я такой, чтобы сомневаться в компетенции Чата.
И соответсвенно код установки npm install puppeteer 2captcha-ts playwright (правда у меня через VS Code не получилось их поставить все вместе, вероятно виной всему кривые руки, я ставил по одному и через консоль)
Дальше интереснее, так как все что было до этого этапа я так или иначе знаю, а вот следующий блок для меня реально темный лес и я просто делаю то, что говорит мне мой нейроконсультант.
Итак, для корректной работы кода понадобился файл с кодировкой. env, причем он может быть без названия, а в этом файле должны быть следующие данные:
Понятно, что вместо параметра your_2captcha_api_key я подставил свой ключ с сервиса.
Дальше было еще 6 рекомендаций, что надо делать чтобы код заработал, но
Соответсвенно после первого запуска магии не случилось, ничего не заработало, очень страноо, скажете вы…
Первая ошибка была связана с использованием синтаксиса ES6 import в Node. js. Для его использования нужно либо указать тип модуля в package. json, либо изменить расширение файла на. mjs.
Мне было лень указывать тип модуля в package. json и я пошел по пути наименьшего сопротивления, тупо переименовал расширение файла index с js на mjs.
Следующая ошибка была связана с подключаемым пакетом 2captcha-ts, но подробно описывать их не хочется, скажу лишь что я изменил код, отвечающий за запуск этого модуля несколько раз, добавил логирование и проверку корректности подключения файла. env.
И это все равно не сработало, скрипт продолжал выдавать ошибку за ошибкой и упорно не хотел работать. Я сравнил скриншот и код который мне вытащил оттуда Чат и нашел небольшую опечатку, которая и была корнем проблемы.
Но, как оказалось, и это не помогло — выпала ошибка apikey is not defined in. env file
Это мы пофиксили добавлением нового пакета:
После этого встреилось еще пару опечаток, которые Чат пытался решить через изменения структуры кода, но надо было просто внимательно сравнить скриншот и сам код.
И в конце концов код файла index. js из вот такого:
Превратился в вот такой index. mjs
В коде выше не забудьте подставить верный урл, где требуется решение (если будете применять).
А из вот такого inject. js
В вот такой inject. js
И скрипт заработал. Вот прям совсем. Решил капчу и продолжает ее решать при каждом запуске.
Получается будущее наступило, старик. Но это не точно.
Что вам делать с этой информацией? Ну, блин, мне очень нравиться совет — живи теперь с этим. Но, советы раздавать не хочется. Смотрите сами, может пригодится кому для своих проектов…