Работа сайта выдачи заказов
Сайт выдачи заказов действительно является чем-то вроде веб-приложения. Да и интерфейс схож. По большому счету, сайт состоит из трех страниц:
- Логин
- Список заказов
- Настройки
Последнее не вижу смысла рассматривать, т.к. ничего полезного по теме там нет.
Все файлы доступны по ссылке в моём репозитрории: ссылка
Защита
Разработчики сайта сделали меры предострожности от исследования их детища. При загрузке сайта через ПК браузер, он выдает ошибку 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>