CoderCastrov logo
CoderCastrov
Парсер

Парсинг коэффициентов ММА с основного веб-сайта сравнения коэффициентов (1/2)

Парсинг коэффициентов ММА с основного веб-сайта сравнения коэффициентов (1/2)
просмотров
2 мин чтение
#Парсер

Эта статья направлена на сбор данных от нескольких букмекеров для сравнения коэффициентов и получения информации о движении линий ставок со временем. Это отличный пример использования знаний парсинга и веб-разработки для доступа к зашифрованным данным на веб-странице.

Извлечение данных

Сначала нам нужно получить доступ к данным, которые отображаются на веб-странице.

Щелкните правой кнопкой мыши в любом месте страницы и выберите "examiner l'élément" (извините за французский, inspect), затем перейдите на вкладку "Réseau" (Network). Это позволяет нам получить доступ к данным, которые обмениваются между фронтендом и бэкендом веб-сайта.

Demo

Когда источником является "xhr", вы можете быть уверены, что это данные, которые нам нужны, но в зашифрованном/закодированном формате, вот здесь:

LExRPzI+NlFpUXw2Mj9RW1E1MkUyUWksTFFJUWlgZGdmX2FiZ2FjX19fW1FKUWlgXWNnYl9oW1E1MkUyezIzNj1EUWlMUUlRaWhOTltMUUlRaWBkZ2ZfYWJnYWRfX19bUUpRaWBdZGBkY2VOW0xRSVFpYGRnZl9hYmdhZV...

Это требует некоторой декодировки... Мы можем распознать формат кодировки base64, давайте скопируем и вставим его в конвертер

Decoding from base64

Декодирование данных

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

Давайте перейдем к "Trace de la pile" (стек вызовов), чтобы посмотреть на код, создающий страницу, и особенно на то, как создаются графики изменения коэффициентов ставок. Давайте нажмем на функцию, которая создает наши графики "CreateMIChart"

JavaScript функция, создающая график из зашифрованных данных

Функция, которая решит все наши проблемы, - это функция notin, которая сначала декодирует base64 (как упоминалось выше), а затем декодирует данные из зашифрованного формата! давайте углубимся в нее...

Часть функции, декодирующей зашифрованную строку

Это похоже на шифрование Цезаря, хорошая новость в том, что код явно дает нам ссылку (переменная m выше) и правило для расшифровки.

В Python это занимает несколько строк кода.

В результате мы получаем данные формата json об эволюции коэффициентов ставок для каждого бойца (временная метка / коэффициенты).

Мы узнаем коэффициент 2.64 со скриншота во введении. Временная метка в Unix-миллисекундах соответствует четвергу, 16 апреля 2020 года, 07:57:04

Заключение

Мы рассмотрели, как собирать и расшифровывать данные с крупного сайта сравнения коэффициентов. Именно так BuzzFeed несколько лет назад обнаружил потенциальные случаи мошенничества в мире тенниса, когда коэффициенты менялись слишком быстро (читайте здесь).

В следующей статье я сосредоточусь на том, как собирать эти данные для сравнения коэффициентов у разных букмекеров.