Site icon AppTractor

Как я использовал Python и Selenium, чтобы бесплатно получить пожизненный запас хлебных палочек от Папа Джонс

Не знаю, как вы, но я люблю пиццу. Особенно, когда эта пицца идет с чесночными палочками от Папа Джонс. Поэтому я был в восторге, когда после недавней покупки получил от них следующее письмо:

Папа Джонс бесплатно раздает еду! Мне точно нужно заполнить анкету…

Опрос

Я прошел опрос как обычный человек и, конечно же, получил код подтверждения для получения бесплатных палочек.

Но из любопытства я еще раз взглянул на исходную ссылку. Похоже, что параметр GUID был идентификатором клиента. Угадайте, что случилось, когда я изменил его на что-то случайное? Появился новый опрос, ожидающий завершения и получения новых  хлебных палочек.

Я мог бы делать это вечно! Однако это не казалось эффективным использованием моего времени — давайте внесем немного магии Selenium.

Хлебные палочки бесплатно от Папа Джонс: бот

Selenium Webdriver — это фреймворк автоматизации, который в основном используется для целей тестирования. Я использовал Python и решил использовать Selenium для создания бота для прохождения опросов.

Настройка

Я запустил pip install selenium & pip install fake_useragent, чтобы начать. Что такое пользовательский агент? В веб-документации MDN это определяется как:

Заголовок запроса User-Agent — это характерная строка, которая позволяет серверам и сетевым узлам идентифицировать приложение, операционную систему, поставщика и/или версию запрашивающего пользовательского агента.

Казалось хорошей идеей рандомизировать этот заголовок запроса, чтобы обойти любой механизм фильтрации/блокировки, который может существовать — вот где вступает в дело fake_useragent.

Мне также нужно было загрузить ChromeDriver, чтобы взаимодействовать с браузером Chrome.

Код

Базовая настройка Selenium выглядит следующим образом (инициализация выполняется с использованием случайного пользовательского агента):

После рандомизации параметра GUID бот открывает веб-страницу и начинает кликать. Я добавил задержку в одну секунду между каждым действием, чтобы страница могла загрузиться, а также чтобы вести себя примерно как нормальный человек.

XPath

XPath — это язык запросов для выбора узлов из документа HTML или XML. Для каждого из вопросов опроса я использовал инструмент тестирования XPath в реальном времени, чтобы выбрать правильный узел, на который должен щелкнуть бот. Конечно, я дал Папа Джонс оценку в 5 звезд за все.

Да на здоровье!

И, наконец, у нас есть код.

Праздник к нам приходит

После получаса программирования я закончил свой Python-бот. Вот суть, содержащая код, и вот он в действии:

Спасибо, Папа Джонс

Я ввел каждый из сгенерированных кодов на сайте. И вот он — потенциально бесконечный запас хлебных палочек.

Хлеб бесплатно от Папа Джонс для меня и отличные отзывы для отдела маркетинга компании. Мне кажется, что это беспроигрышная ситуация! Мне даже пришлось изучить XPath и отточить свои навыки работы с Selenium в процессе.

Но я, конечно, не заказывал их все. Как честный человек, я вместо этого уведомил Папа Джонс об этой лазейке вместе с proof-of-concept видео — но на момент написания статьи они не ответили. Однако опрос больше не работает, так что я думаю, они получили сообщение.

Кстати, я мог бы программно заказать 1000 чесночных пицц в каждой из пиццерий Papa John’s по всей Великобритании и в одиночку довести Papa John’s до безумия. Вы можете представить себе хаос, который приключился бы?

Может быть я сделал это в какой-либо из параллельных вселенных.

Спасибо за прочтение.

Источник

Exit mobile version