[Python, Браузеры, Занимательные задачки, Софт] Как я получил пожизненный запас чесночной пиццы с помощью Python и Selenium (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
История голодного студента с пытливым умом
Не знаю, как вы, а я обожаю пиццу. Особенно если это особые чесночные пицца-палочки Papa John’s. Поэтому я был в восторге, когда после заказа еды навынос получил от них следующее письмо:
Papa John’s (с) Заголовок письма с опросом
Бесплатная еда! Мне определённо нужно было пройти этот опрос…
Опрос
Papa John’s (с) Завершающая страница опроса
Я завершил опрос как нормальный человек и получил код валидации для бесплатной чесночной пиццы.
Но из любопытства я ещё раз взглянул на ссылку. Похоже, параметр GUID был идентификатором клиента. Угадайте, что произошло, когда я изменил его на что-то случайное? Выскочил совершенно новый опрос с новыми халявными пицца-палочками.
Я мог делать это вечно! Но это не самое эффективное использование моего времени, так что давайте применим немного магии Selenium.
Бот
Selenium Webdriver — это фреймворк автоматизации действий в браузере, который в основном используется для тестирования. Я выбрал Python как язык программирования и решил попробовать Selenium для создания опросного бота.
Установка
Для начала запускаем pip install selenium и pip install fake_useragent. Что такое user-agent? Документация MDN определяют его следующим образом:
Заголовок запроса User-Agent — это строка, позволяющая серверам и сетевым узлам идентифицировать приложение, операционную систему, поставщика и/или версию агента, который отправил запрос.
Мне показалось хорошей идеей рандомизировать этот заголовок, чтобы обойти любой возможный механизм фильтрации/блокировки — вот где появляется fake_useragent.
Кроме того, нужно было скачать ChromeDriver, чтобы взаимодействовать с браузером Chrome.
Код
Базовая настройка Selenium выглядит следующим образом (инициализация с помощью случайного user-agent):
from fake_useragent import UserAgent
from selenium import webdriver
from random import randrange
import time
ua = UserAgent(verify_ssl=False)
user_agent = ua.random
print("USER AGENT: " + user_agent)
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("user-agent=" + user_agent)
driver = webdriver.Chrome(chrome_options=chrome_options)
После рандомизации параметра GUID бот открывает веб-страницу и начинает щёлкать мышью. Я добавил секундную задержку между действиями, чтобы страница успевала загружаться и чтобы выглядеть примерно как реальный человек.
id = randrange(100000000000000)
url = "https://www.papajohnsfeedback.com/GBR?GUID=" + str(id)
print(url)
driver.get(url)
time.sleep(1)
driver.find_element_by_id('NextButton').click()
time.sleep(1)
driver.find_element_by_id('NextButton').click()
time.sleep(1)
driver.find_element_by_xpath("//div[contains(@class, 'Opt1')]/span").click()
time.sleep(1)
Часть скрипта бота
XPath
XPath — это язык запросов для выбора узлов из документа HTML или XML. Для каждого из вопросов опроса я использовал инструмент тестирования XPath реального времени для выбора правильных узлов, на которые нажимает бот. Конечно, я ставил Papa John’s оценки 5 звёзд по всем пунктам.
Тестирование XPath
Всегда пожалуйста!
И, наконец, получаем код валидации.
Papa John's (с) Завершающая страница опроса
driver.find_element_by_id('NextButton').click()
time.sleep(1)
code = driver.find_element_by_class_name('ValCode').get_attribute("innerHTML").split(' ')[2]
Извлечение кода валидации
Празднование
Через полчаса программирования python-бот был готов. Вот gist с кодом, а вот он в действии:
Извините, данный ресурс не поддреживается. :(
Спасибо, Papa John’s
Я ввёл все сгенерированные коды при расчёте в корзине Papa John's. И вот он — потенциально бесконечный запас чесночных пицца-палочек.
Бесплатная пицца для меня и отличные отзывы для отдела маркетинга Papa John's. Кажется, беспроигрышная ситуация! Для этого бота мне даже пришлось изучить XPath и отточить свои навыки Selenium.
Конечно, я ничего не заказал. Как честный человек, я уведомил Papa John's об уязвимости вместе с видеодоказательством. На момент написания статьи они не ответили. Но опрос больше не работает, так что я думаю, что они получили сообщение.
Кстати, я мог бы запрограммировать заказ 1000 чесночных пицц из каждого магазина Papa John's по всей Великобритании и в одиночку повергнуть сеть Papa John's в безумие. Можете себе представить, какой возник бы хаос?
Возможно, я сделал это в параллельной вселенной.
===========
Источник:
habr.com
===========
===========
Автор оригинала: Sanjeet Chatterjee
===========Похожие новости:
- [Децентрализованные сети, Информационная безопасность, Криптография, Софт] Теперь не заблокируешь: выложен первый выпуск децентрализованной коммуникационной платформы Jami
- [Удалённая работа, Софт, Логические игры] Удалённые игры вызвали вспышку мошенничества и взаимных подозрений в шахматах
- [Open source, Java, Софт, Финансы в IT] «1С: Предприятие» будет работать на российской Java-платформе
- [Python, Программирование] О полезности contextvars
- [Системное администрирование, Резервное копирование, Хранение данных, Софт] Откуда берутся логи? Veeam Log Diving
- [Python, Машинное обучение, Искусственный интеллект] Головоломка для ИИ
- [Python] Визуализация использования GIL в CPython
- [Разработка под Linux, Софт] В Linux 5.10 проблема 2038 года станет проблемой 2486 года
- [Python, Кодобред] Сказка про декораторы в Python
- [Google Chrome, Браузеры, Информационная безопасность] Chrome уличили в хранении данных сайтов Google
Теги для поиска: #_python, #_brauzery (Браузеры), #_zanimatelnye_zadachki (Занимательные задачки), #_soft (Софт), #_python, #_selenium, #_selenium_webdriver, #_chromedriver, #_chesnochnaja_pitstsa (чесночная пицца), #_pitstsapalochki (пицца-палочки), #_xpath, #_python, #_brauzery (
Браузеры
), #_zanimatelnye_zadachki (
Занимательные задачки
), #_soft (
Софт
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:59
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
История голодного студента с пытливым умом Не знаю, как вы, а я обожаю пиццу. Особенно если это особые чесночные пицца-палочки Papa John’s. Поэтому я был в восторге, когда после заказа еды навынос получил от них следующее письмо: Papa John’s (с) Заголовок письма с опросом Бесплатная еда! Мне определённо нужно было пройти этот опрос… Опрос Papa John’s (с) Завершающая страница опроса Я завершил опрос как нормальный человек и получил код валидации для бесплатной чесночной пиццы. Но из любопытства я ещё раз взглянул на ссылку. Похоже, параметр GUID был идентификатором клиента. Угадайте, что произошло, когда я изменил его на что-то случайное? Выскочил совершенно новый опрос с новыми халявными пицца-палочками. Я мог делать это вечно! Но это не самое эффективное использование моего времени, так что давайте применим немного магии Selenium. Бот Selenium Webdriver — это фреймворк автоматизации действий в браузере, который в основном используется для тестирования. Я выбрал Python как язык программирования и решил попробовать Selenium для создания опросного бота. Установка Для начала запускаем pip install selenium и pip install fake_useragent. Что такое user-agent? Документация MDN определяют его следующим образом: Заголовок запроса User-Agent — это строка, позволяющая серверам и сетевым узлам идентифицировать приложение, операционную систему, поставщика и/или версию агента, который отправил запрос.
Мне показалось хорошей идеей рандомизировать этот заголовок, чтобы обойти любой возможный механизм фильтрации/блокировки — вот где появляется fake_useragent. Кроме того, нужно было скачать ChromeDriver, чтобы взаимодействовать с браузером Chrome. Код Базовая настройка Selenium выглядит следующим образом (инициализация с помощью случайного user-agent): from fake_useragent import UserAgent
from selenium import webdriver from random import randrange import time ua = UserAgent(verify_ssl=False) user_agent = ua.random print("USER AGENT: " + user_agent) chrome_options = webdriver.ChromeOptions() chrome_options.add_argument("user-agent=" + user_agent) driver = webdriver.Chrome(chrome_options=chrome_options) После рандомизации параметра GUID бот открывает веб-страницу и начинает щёлкать мышью. Я добавил секундную задержку между действиями, чтобы страница успевала загружаться и чтобы выглядеть примерно как реальный человек. id = randrange(100000000000000)
url = "https://www.papajohnsfeedback.com/GBR?GUID=" + str(id) print(url) driver.get(url) time.sleep(1) driver.find_element_by_id('NextButton').click() time.sleep(1) driver.find_element_by_id('NextButton').click() time.sleep(1) driver.find_element_by_xpath("//div[contains(@class, 'Opt1')]/span").click() time.sleep(1) Часть скрипта бота XPath XPath — это язык запросов для выбора узлов из документа HTML или XML. Для каждого из вопросов опроса я использовал инструмент тестирования XPath реального времени для выбора правильных узлов, на которые нажимает бот. Конечно, я ставил Papa John’s оценки 5 звёзд по всем пунктам. Тестирование XPath Всегда пожалуйста! И, наконец, получаем код валидации. Papa John's (с) Завершающая страница опроса driver.find_element_by_id('NextButton').click()
time.sleep(1) code = driver.find_element_by_class_name('ValCode').get_attribute("innerHTML").split(' ')[2] Извлечение кода валидации Празднование Через полчаса программирования python-бот был готов. Вот gist с кодом, а вот он в действии: Извините, данный ресурс не поддреживается. :( Спасибо, Papa John’s Я ввёл все сгенерированные коды при расчёте в корзине Papa John's. И вот он — потенциально бесконечный запас чесночных пицца-палочек. Бесплатная пицца для меня и отличные отзывы для отдела маркетинга Papa John's. Кажется, беспроигрышная ситуация! Для этого бота мне даже пришлось изучить XPath и отточить свои навыки Selenium. Конечно, я ничего не заказал. Как честный человек, я уведомил Papa John's об уязвимости вместе с видеодоказательством. На момент написания статьи они не ответили. Но опрос больше не работает, так что я думаю, что они получили сообщение. Кстати, я мог бы запрограммировать заказ 1000 чесночных пицц из каждого магазина Papa John's по всей Великобритании и в одиночку повергнуть сеть Papa John's в безумие. Можете себе представить, какой возник бы хаос? Возможно, я сделал это в параллельной вселенной. =========== Источник: habr.com =========== =========== Автор оригинала: Sanjeet Chatterjee ===========Похожие новости:
Браузеры ), #_zanimatelnye_zadachki ( Занимательные задачки ), #_soft ( Софт ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:59
Часовой пояс: UTC + 5