June 21, 2019

Работа сайта выдачи заказов

Сайт выдачи заказов действительно является чем-то вроде веб-приложения. Да и интерфейс схож. По большому счету, сайт состоит из трех страниц:

  • Логин
  • Список заказов
  • Настройки

Последнее не вижу смысла рассматривать, т.к. ничего полезного по теме там нет.

Все файлы доступны по ссылке в моём репозитрории: ссылка

Защита

Разработчики сайта сделали меры предострожности от исследования их детища. При загрузке сайта через ПК браузер, он выдает ошибку 404. Умно, умно... Вот только исходный код HTML можно достать и на мобильном устройстве, потом просто перекинуть на ПК, и исследовать в том же хроме или опере.

Логин

При открытии страницы логина нам сразу говорят о том, что

Сайт может запросить Вашу GPS геопизицию.

Просто запомним. Это пригодится в будущем.

По большому счету, в странице логина нет ничего интересного. На первый взгляд...

В теле страницы есть следующий код (скрипт):

<script>
	document.write('<script src=/js/' +
	('__proto__' in {} ? 'zepto' : 'jquery') +
	'.min.js?v=1><\/script>');
    var User = {"show_order_info":false,"ignore_gps_accuracy":false,"dist_use_addr":0,"days_left":null,"currentOrder":null,"paymentConfirmed":true,"currency":"\u0433\u0440\u043d","use_dev":true,"is_dev":false};
</script>

На первый взгляд - невнятная каша. Представим это в более понятном виде:

var User = {
"show_order_info":false,
"ignore_gps_accuracy":false,
"dist_use_addr":0,
"days_left":null,
"currentOrder":null,
"paymentConfirmed":true,
"currency":"\u0433\u0440\u043d",
"use_dev":true,
"is_dev":false
};

Ничего не напоминает?

Здесь создается класс User с нужными параметрами:

"show_order_info":false, -- показ информации о пользователе

"ignore_gps_accuracy":false, - игнорировать точность GPS

"dist_use_addr":0, - использовать адрес назначения

"days_left":null, - сколько дней осталось до блокировки аккаунта

"currentOrder":null, - текущий заказ

"paymentConfirmed":true, - подтверждена ли оплата

"currency":"\u0433\u0440\u043d", - текущая валюта оплаты. Кодировка UNICODE.

"use_dev":true, - использование параметров разработчика

"is_dev":false - флаг определяющий принадлежность к разработчику

Эти данные передаются на сервер, и заружается страница списка заказов.

Список заказов

ID водителя:

<div class="driver">1024849557            </div>

Параметры запроса задаются в классе mbody:

<script>
    window.IS_DEV = 0;
    window.WEBSOCK_HTTP_HOSTS = ["35.246.162.82:8080"];
    window.UPDATE_INTERVAL = 4000;
    window.CAPTURE_INTERVAL = 4000;
    window.adminMessages = [];
    window.notifierMessages = [];
    window.ENABLE_DEVICE_VALIDATION = 0;
    window.ORDER_MAP_CENTER_POSITION = [49.99359,36.23045];
    window.USER_LOGIN = "1024849557";
    window.DELIVERY_TIME_COR = 0;
    window.POINT_AB_DISABLE = 1;
</script>


window.IS_DEV = 0; -- флаг разработчика
window.WEBSOCK_HTTP_HOSTS = ["35.246.162.82:8080"]; -- адрес сервера
window.UPDATE_INTERVAL = 4000; -- интервал обновления списка заказов
window.CAPTURE_INTERVAL = 4000; -- интервал сбора данных с устройства
window.adminMessages = []; -- сообщения от админитратора
window.notifierMessages = []; -- уведомления
window.ENABLE_DEVICE_VALIDATION = 0; -- флаг проверки устройства
window.ORDER_MAP_CENTER_POSITION = [49.99359,36.23045]; -- центр оси координат на карте
window.USER_LOGIN = "1024849557"; -- логин юзера
window.DELIVERY_TIME_COR = 0; -- настройки
window.POINT_AB_DISABLE = 1; -- настройки

При попытке войти в адмику через браузер, получаем:

Возможно там нужны дополнительны езаголовки запроса, или же срабатывает защита от ПК браузеров.

Дополнительно

  • <script src="/js/admin/ua-parser.min.js?v=2233"></script> - благодаря этому скрипту, сайт не открывается на ПК
  • Ну и так...В конце страницы есть номер телефона. Скорее всего номер телефона водителя, но это не точно.
<ul class="main_menu">
<!--href="tel:+380501234567"-->
<li><strong><a id="daysLeft"></a></strong></li>