diff --git a/bot/operations/hotels.py b/bot/operations/hotels.py index 7b5b55cd..0874fc32 100644 --- a/bot/operations/hotels.py +++ b/bot/operations/hotels.py @@ -121,6 +121,52 @@ async def delete_hotel(update: Update, context): # await pms_manager.save_log("error", str(e)) # await query.edit_message_text(f"❌ Ошибка: {e}") +# async def check_pms(update, context): +# query = update.callback_query + +# try: +# # Получение ID отеля из callback_data +# hotel_id = query.data.split("_")[2] + +# # Получение конфигурации отеля и PMS +# hotel = await sync_to_async(Hotel.objects.select_related('pms').get)(id=hotel_id) +# pms_config = hotel.pms + +# if not pms_config: +# await query.edit_message_text("PMS конфигурация не найдена.") +# return + +# # Создаем экземпляр PMSIntegrationManager +# pms_manager = PMSIntegrationManager(hotel_id=hotel_id) +# await pms_manager.load_hotel() +# await sync_to_async(pms_manager.load_plugin)() + +# # Проверяем, какой способ интеграции использовать +# if hasattr(pms_manager.plugin, 'fetch_data') and callable(pms_manager.plugin.fetch_data): +# # Плагин поддерживает метод fetch_data +# data = await pms_manager.plugin.fetch_data() +# elif pms_config.api_url and pms_config.token: +# # Используем прямой запрос к API +# from pms_integration.api_client import APIClient +# api_client = APIClient(base_url=pms_config.api_url, access_token=pms_config.token) +# data = api_client.fetch_reservations() +# else: +# # Если подходящий способ не найден +# await query.edit_message_text("Подходящий способ интеграции с PMS не найден.") +# return + +# # Сохраняем данные в базу +# from bot.utils.database import save_reservations +# await sync_to_async(save_reservations)(data) + +# # Уведомляем об успешной интеграции +# await query.edit_message_text(f"Интеграция PMS {pms_config.name} завершена успешно.") +# except Exception as e: +# # Обрабатываем и логируем ошибки +# await query.edit_message_text(f"❌ Ошибка: {str(e)}") + + + async def check_pms(update, context): query = update.callback_query @@ -144,28 +190,28 @@ async def check_pms(update, context): # Проверяем, какой способ интеграции использовать if hasattr(pms_manager.plugin, 'fetch_data') and callable(pms_manager.plugin.fetch_data): # Плагин поддерживает метод fetch_data - data = await pms_manager.plugin.fetch_data() - elif pms_config.api_url and pms_config.token: - # Используем прямой запрос к API - from pms_integration.api_client import APIClient - api_client = APIClient(base_url=pms_config.api_url, access_token=pms_config.token) - data = api_client.fetch_reservations() + report = await pms_manager.plugin._fetch_data() else: - # Если подходящий способ не найден await query.edit_message_text("Подходящий способ интеграции с PMS не найден.") return - # Сохраняем данные в базу - from bot.utils.database import save_reservations - await sync_to_async(save_reservations)(data) + # Формируем сообщение о результатах + result_message = ( + f"Интеграция PMS завершена успешно.\n" + f"Обработано интервалов: {report['processed_intervals']}\n" + f"Обработано записей: {report['processed_items']}\n" + f"Ошибки: {len(report['errors'])}" + ) + if report["errors"]: + result_message += "\n\nСписок ошибок:\n" + "\n".join(report["errors"]) - # Уведомляем об успешной интеграции - await query.edit_message_text(f"Интеграция PMS {pms_config.name} завершена успешно.") + await query.edit_message_text(result_message) except Exception as e: # Обрабатываем и логируем ошибки await query.edit_message_text(f"❌ Ошибка: {str(e)}") + async def setup_rooms(update: Update, context): """Настроить номера отеля.""" query = update.callback_query diff --git a/pms_integration/plugins/ecvi_pms.py b/pms_integration/plugins/ecvi_pms.py index 4caec542..cf3f642e 100644 --- a/pms_integration/plugins/ecvi_pms.py +++ b/pms_integration/plugins/ecvi_pms.py @@ -1,11 +1,11 @@ from .base_plugin import BasePMSPlugin - +import requests class EcviPMS(BasePMSPlugin): """ - Плагин для PMS Shelter. + Плагин для PMS ECVI. """ - def fetch_data(self): + def _fetch_data(self): print("Fetching data from Ecvi PMS...") # Реализация метода получения данных из PMS Shelter response = requests.get(self.pms_config.url, headers={"Authorization": f"Bearer {self.pms_config.token}"}) diff --git a/pms_integration/plugins/shelter_pms.py b/pms_integration/plugins/shelter_pms.py index a6c04bf0..164a0f08 100644 --- a/pms_integration/plugins/shelter_pms.py +++ b/pms_integration/plugins/shelter_pms.py @@ -16,34 +16,32 @@ class Shelter(BasePMSPlugin): self.api_url = pms_config.url self.token = pms_config.token self.pagination_count = 50 - def get_default_parser_settings(self): - """ - Возвращает настройки по умолчанию для разбора данных PMS Shelter. - """ - return { - "fields_mapping": { - "reservation_id": "id", - "hotel_id": "hotelId", - "hotel_name": "hotelName", - "check_in": "from", - "check_out": "until", - "reservation_date": "date", - "room_type_id": "roomTypeId", - "room_id": "roomId", - "room_number": "roomNumber", - "room_type_name": "roomTypeName", - "check_in_status": "checkInStatus", - "is_annul": "isAnnul", - "tariff_id": "tariffId", - "reservation_price": "reservationPrice", - "discount": "discount", - "guests": "guests", - }, - "date_format": "%Y-%m-%dT%H:%M:%S", - "timezone": "UTC", - } + """ + Возвращает настройки по умолчанию для разбора данных PMS Shelter. + """ + return { + "fields_mapping": { + "reservation_id": "id", + "hotel_id": "hotelId", + "hotel_name": "hotelName", + "check_in": "from", + "check_out": "until", + "reservation_date": "date", + "room_type_id": "roomTypeId", + "room_id": "roomId", + "room_number": "roomNumber", + "room_type_name": "roomTypeName", + "check_in_status": "checkInStatus", + "is_annul": "isAnnul", + "reservation_price": "reservationPrice", + "discount": "discount", + }, + "date_format": "%Y-%m-%dT%H:%M:%S", + "timezone": "UTC", + } + async def _get_last_saved_date(self): """ Получает дату последнего сохраненного бронирования для отеля. @@ -56,127 +54,159 @@ class Shelter(BasePMSPlugin): except Exception as e: print(f"[ERROR] Ошибка получения последнего сохраненного бронирования: {e}") return None - async def _fetch_data(self): """ - Получает данные о бронированиях из PMS Shelter. + Получает данные о бронированиях из PMS. + Данные обрабатываются по временным промежуткам и сразу записываются в БД. + Возвращает отчёт о проделанной работе. """ - try: - now = datetime.utcnow() - start_date = await self._get_last_saved_date() or (now - timedelta(days=60)) - end_date = now + timedelta(days=60) - total_count = None - from_index = 0 + now = datetime.utcnow().replace(tzinfo=timezone.utc) + start_date = await self._get_last_saved_date() or (now - timedelta(days=90)) + end_date = now + timedelta(days=30) - headers = { - 'accept': 'text/plain', - 'Authorization': f'Bearer {self.token}', - 'Content-Type': 'application/json', + headers = { + 'accept': 'text/plain', + 'Authorization': f'Bearer {self.token}', + 'Content-Type': 'application/json', + } + + print(f"[DEBUG] Fetching data from {start_date} to {end_date}") + + # Результаты выполнения + report = { + "processed_intervals": 0, + "processed_items": 0, + "errors": [], + } + + # Разделение на временные интервалы + interval_days = 5 # Например, каждые 5 дней + current_start_date = start_date + + while current_start_date < end_date: + current_end_date = min(current_start_date + timedelta(days=interval_days), end_date) + + # Формирование payload + payload = { + "from": current_start_date.strftime('%Y-%m-%dT%H:%M:%SZ'), + "until": current_end_date.strftime('%Y-%m-%dT%H:%M:%SZ'), } + print(f"[DEBUG] Sending payload: {json.dumps(payload)}") - print(f"[DEBUG] Start date: {start_date}, End date: {end_date}") + try: + response = await sync_to_async(requests.post)(self.api_url, headers=headers, data=json.dumps(payload)) + response.raise_for_status() + except requests.exceptions.RequestException as e: + error_message = f"[ERROR] Request error between {current_start_date} and {current_end_date}: {e}" + print(error_message) + report["errors"].append(error_message) + current_start_date = current_end_date + continue - while total_count is None or from_index < total_count: - payload = { - "from": start_date.strftime('%Y-%m-%dT%H:%M:%SZ'), - "until": end_date.strftime('%Y-%m-%dT%H:%M:%SZ'), - "pagination": { - "from": from_index, - "count": self.pagination_count, - }, - } - print(f"[DEBUG] Payload: {json.dumps(payload)}") + try: + data = response.json() + print(f"[DEBUG] Received response: {data}") + except json.JSONDecodeError as e: + error_message = f"[ERROR] Ошибка декодирования JSON между {current_start_date} и {current_end_date}: {e}" + print(error_message) + report["errors"].append(error_message) + current_start_date = current_end_date + continue - try: - response = await sync_to_async(requests.post)(self.api_url, headers=headers, data=json.dumps(payload)) - except requests.RequestException as e: - print(f"[ERROR] Ошибка HTTP-запроса: {e}") - raise ValueError(f"Ошибка HTTP-запроса: {e}") - - print(f"[DEBUG] Response status: {response.status_code}") - - if response.status_code != 200: - print(f"[ERROR] Request error: {response.status_code}, {response.text}") - raise ValueError(f"Ошибка запроса: {response.status_code}, {response.text}") - - try: - data = response.json() - except json.JSONDecodeError as e: - print(f"[ERROR] Ошибка декодирования JSON: {e}") - raise ValueError(f"Ошибка декодирования JSON: {e}") - - # Проверяем, что ответ содержит ключи "count" и "items" - if not isinstance(data, dict) or "count" not in data or "items" not in data: - print(f"[ERROR] Неверный формат данных: {data}") - raise ValueError(f"Неверный формат данных: {data}") - - total_count = data.get("count", 0) - items = data.get("items", []) - - print(f"[DEBUG] Total count: {total_count}, Items retrieved: {len(items)}") - - if not isinstance(items, list): - print(f"[ERROR] Неверный тип items: {type(items)}. Ожидался list.") - raise ValueError(f"Неверный тип items: {type(items)}. Ожидался list.") - - for item in items: - if not isinstance(item, dict): - print(f"[ERROR] Неверный формат элемента items: {item}") - continue + total_count = data.get("count", 0) + items = data.get("items", []) + print(f"[DEBUG] Retrieved {len(items)} items (Total: {total_count}).") + # Если данных нет, пропускаем текущий интервал + if not items: + print(f"[WARNING] No items found between {current_start_date} and {current_end_date}.") + else: + for idx, item in enumerate(items, start=1): + print(f"[DEBUG] Processing item #{idx}/{len(items)}: {item}") try: await self._save_to_db(item) + report["processed_items"] += 1 except Exception as e: - print(f"[ERROR] Ошибка сохранения бронирования {item.get('id')}: {e}") + error_message = f"[ERROR] Error processing item {item.get('id', 'Unknown')}: {e}" + print(error_message) + report["errors"].append(error_message) - from_index += len(items) - print(f"[DEBUG] Updated from_index: {from_index}") + # Отмечаем обработанный интервал + report["processed_intervals"] += 1 - except Exception as e: - print(f"[ERROR] Общая ошибка в методе _fetch_data: {e}") + # Обновляем начало интервала + current_start_date = current_end_date + print(f"[DEBUG] Data fetching completed from {start_date} to {end_date}.") + return report + async def _save_to_db(self, item): """ Сохраняет данные о бронировании в БД. + Проверяет, существует ли уже бронирование с таким ID. """ try: - print(f"[DEBUG] Fetching hotel for PMS: {self.pms_config}") + print(f"[DEBUG] Starting to save reservation {item['id']} to the database.") + hotel = await sync_to_async(Hotel.objects.get)(pms=self.pms_config) print(f"[DEBUG] Hotel found: {hotel.name}") - # Учитываем формат даты без 'Z' date_format = '%Y-%m-%dT%H:%M:%S' print(f"[DEBUG] Parsing check-in and check-out dates for reservation {item['id']}") - check_in = datetime.strptime(item["from"], date_format).replace(tzinfo=timezone.utc) - check_out = datetime.strptime(item["until"], date_format).replace(tzinfo=timezone.utc) + try: + check_in = datetime.strptime(item["from"], date_format).replace(tzinfo=timezone.utc) + check_out = datetime.strptime(item["until"], date_format).replace(tzinfo=timezone.utc) + print(f"[DEBUG] Parsed check-in: {check_in}, check-out: {check_out}") + except Exception as e: + print(f"[ERROR] Ошибка парсинга дат для бронирования {item['id']}: {e}") + raise - # Проверяем room_number и устанавливаем значение по умолчанию, если оно отсутствует room_number = item.get("roomNumber", "") or "Unknown" print(f"[DEBUG] Room number determined: {room_number}") - # Сохраняем бронирование - print(f"[DEBUG] Saving reservation {item['id']} to database") - reservation, created = await sync_to_async(Reservation.objects.update_or_create)( - reservation_id=item["id"], - hotel=hotel, - defaults={ - "room_number": room_number, - "room_type": item.get("roomTypeName", ""), - "check_in": check_in, - "check_out": check_out, - "status": item.get("checkInStatus", ""), - "price": item.get("reservationPrice", 0), - "discount": item.get("discount", 0), - }, - ) + print(f"[DEBUG] Checking if reservation with ID {item['id']} already exists.") + existing_reservation = await sync_to_async( + Reservation.objects.filter(reservation_id=item["id"]).first + )() - print(f"[DEBUG] {'Created' if created else 'Updated'} reservation {item['id']}") + if existing_reservation: + print(f"[DEBUG] Reservation with ID {item['id']} already exists. Updating it...") + print(f"[DEBUG] Updating existing reservation {item['id']}.") + await sync_to_async(Reservation.objects.update_or_create)( + reservation_id=item["id"], + hotel=hotel, + defaults={ + "room_number": room_number, + "room_type": item.get("roomTypeName", ""), + "check_in": check_in, + "check_out": check_out, + "status": item.get("checkInStatus", ""), + "price": item.get("reservationPrice", 0), + "discount": item.get("discount", 0), + }, + ) + print(f"[DEBUG] Updated existing reservation {item['id']}.") + else: + print(f"[DEBUG] No existing reservation found for ID {item['id']}. Creating a new one...") + print(f"[DEBUG] Creating a new reservation {item['id']}.") + await sync_to_async(Reservation.objects.create)( + reservation_id=item["id"], + hotel=hotel, + room_number=room_number, + room_type=item.get("roomTypeName", ""), + check_in=check_in, + check_out=check_out, + status=item.get("checkInStatus", ""), + price=item.get("reservationPrice", 0), + discount=item.get("discount", 0), + ) + print(f"[DEBUG] Created a new reservation {item['id']}.") + + print(f"[DEBUG] {'Created' if not existing_reservation else 'Updated'} reservation {item['id']} / {hotel.name}.") - except KeyError as ke: - print(f"[ERROR] Ошибка обработки ключей в элементе {item}: {ke}") except ValueError as ve: - print(f"[ERROR] Ошибка обработки данных для бронирования {item['id']}: {ve}") + print(f"[ERROR] Ошибка обработки даты для бронирования {item['id']}: {ve}") except Exception as e: - print(f"[ERROR] Общая ошибка сохранения бронирования {item.get('id', 'Unknown')}: {e}") + print(f"[ERROR] Ошибка сохранения бронирования {item['id']}: {e}") diff --git a/reports/GoldenHills 4_report.pdf b/reports/GoldenHills 4_report.pdf index 9a589418..e057a303 100644 Binary files a/reports/GoldenHills 4_report.pdf and b/reports/GoldenHills 4_report.pdf differ diff --git a/tmp_data/wpts_user_activity_log.json b/tmp_data/wpts_user_activity_log.json new file mode 100644 index 00000000..46358fac --- /dev/null +++ b/tmp_data/wpts_user_activity_log.json @@ -0,0 +1,1252 @@ +[ + { + "id": "50115", + "user_id": "0", + "ip": "5.196.29.194", + "created": "2024-11-24 17:19:50", + "timestamp": 1732468790, + "date_time": "2024-11-24 17:19:50", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "3081", + "url_parameters": "utm_medium=qr&utm_content=intermark&utm_term=1702", + "page_title": "Intermark", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/intermark/" + }, + { + "id": "50116", + "user_id": "0", + "ip": "94.243.186.45", + "created": "2024-11-24 17:20:41", + "timestamp": 1732468841, + "date_time": "2024-11-24 17:20:41", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 10; HarmonyOS; LYA-AL00; HMSCore 6.14.0.322; GMSCore 24.45.33) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.196 HuaweiBrowser/15.0.6.301 Mobile Safari/537.36", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 10; HarmonyOS; LYA-AL00; HMSCore 6.14.0.322; GMSCore 24.45.33) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.196 HuaweiBrowser/15.0.6.301 Mobile Safari/537.36", + "location": "Unknown", + "page_id": "3081", + "url_parameters": "utm_medium=qr&utm_content=intermark&utm_term=1521", + "page_title": "Intermark", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/intermark/" + }, + { + "id": "50117", + "user_id": "0", + "ip": "94.243.186.45", + "created": "2024-11-24 17:20:45", + "timestamp": 1732468845, + "date_time": "2024-11-24 17:20:45", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 10; HarmonyOS; LYA-AL00; HMSCore 6.14.0.322; GMSCore 24.45.33) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.196 HuaweiBrowser/15.0.6.301 Mobile Safari/537.36", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 10; HarmonyOS; LYA-AL00; HMSCore 6.14.0.322; GMSCore 24.45.33) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.196 HuaweiBrowser/15.0.6.301 Mobile Safari/537.36", + "location": "Unknown", + "page_id": "3081", + "url_parameters": "utm_medium=qr&utm_content=intermark&utm_term=1521", + "page_title": "Intermark", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/intermark/" + }, + { + "id": "50118", + "user_id": "0", + "ip": "123.6.49.12", + "created": "2024-11-24 17:20:56", + "timestamp": 1732468856, + "date_time": "2024-11-24 17:20:56", + "referred": "http://baidu.com/", + "agent": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36", + "location": "Unknown", + "page_id": "3081", + "url_parameters": "utm_medium=qr&utm_content=intermark&utm_term=1521", + "page_title": "Intermark", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/intermark/" + }, + { + "id": "50119", + "user_id": "0", + "ip": "212.233.85.61", + "created": "2024-11-24 17:21:17", + "timestamp": 1732468877, + "date_time": "2024-11-24 17:21:17", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 YaBrowser/24.10.5.295.10 SA/3 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 YaBrowser/24.10.5.295.10 SA/3 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "3079", + "url_parameters": "utm_medium=qr&utm_content=amberup&utm_term=211", + "page_title": "Amber Shore", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/amber-shore/" + }, + { + "id": "50120", + "user_id": "0", + "ip": "212.233.85.61", + "created": "2024-11-24 17:21:20", + "timestamp": 1732468880, + "date_time": "2024-11-24 17:21:20", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 CriOS/128.0.6613.295 YaBrowser/24.10.5.295.10 SA/3 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 CriOS/128.0.6613.295 YaBrowser/24.10.5.295.10 SA/3 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50121", + "user_id": "0", + "ip": "217.66.154.191", + "created": "2024-11-24 17:23:33", + "timestamp": 1732469013, + "date_time": "2024-11-24 17:23:33", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0.1 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0.1 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "utm_medium=qr-2&utm_content=letyourflat&utm_term=FUSION", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50122", + "user_id": "0", + "ip": "217.66.154.191", + "created": "2024-11-24 17:23:33", + "timestamp": 1732469013, + "date_time": "2024-11-24 17:23:33", + "referred": "https://app.touchh.ru/let-your-flat3/?utm_medium=qr-2&utm_content=letyourflat&utm_term=FUSION", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0.1 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0.1 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50123", + "user_id": "0", + "ip": "217.66.154.191", + "created": "2024-11-24 17:23:43", + "timestamp": 1732469023, + "date_time": "2024-11-24 17:23:43", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0.1 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0.1 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "utm_medium=qr-2&utm_content=letyourflat&utm_term=FUSION", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50124", + "user_id": "0", + "ip": "217.66.154.191", + "created": "2024-11-24 17:23:54", + "timestamp": 1732469034, + "date_time": "2024-11-24 17:23:54", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0.1 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0.1 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "utm_medium=qr-2&utm_content=letyourflat&utm_term=FUSION", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50125", + "user_id": "0", + "ip": "2.133.77.228", + "created": "2024-11-24 17:32:39", + "timestamp": 1732469559, + "date_time": "2024-11-24 17:32:39", + "referred": "", + "agent": "NetworkingExtension/8619.2.8.10.7 Network/4277.42.2 iOS/18.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "NetworkingExtension/8619.2.8.10.7 Network/4277.42.2 iOS/18.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50126", + "user_id": "0", + "ip": "2.133.77.228", + "created": "2024-11-24 17:32:39", + "timestamp": 1732469559, + "date_time": "2024-11-24 17:32:39", + "referred": "", + "agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/601.2.4 (KHTML, like Gecko) Version/9.0.1 Safari/601.2.4 facebookexternalhit/1.1 Facebot Twitterbot/1.0", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/601.2.4 (KHTML, like Gecko) Version/9.0.1 Safari/601.2.4 facebookexternalhit/1.1 Facebot Twitterbot/1.0", + "location": "Unknown", + "page_id": "3248", + "url_parameters": "utm_medium=qr&utm_content=forton&utm_term=402", + "page_title": "??????", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/forton/" + }, + { + "id": "50127", + "user_id": "0", + "ip": "2.133.77.228", + "created": "2024-11-24 17:32:40", + "timestamp": 1732469560, + "date_time": "2024-11-24 17:32:40", + "referred": "", + "agent": "NetworkingExtension/8619.2.8.10.7 Network/4277.42.2 iOS/18.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "NetworkingExtension/8619.2.8.10.7 Network/4277.42.2 iOS/18.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50128", + "user_id": "0", + "ip": "2.133.77.228", + "created": "2024-11-24 17:32:40", + "timestamp": 1732469560, + "date_time": "2024-11-24 17:32:40", + "referred": "", + "agent": "NetworkingExtension/8619.2.8.10.7 Network/4277.42.2 iOS/18.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "NetworkingExtension/8619.2.8.10.7 Network/4277.42.2 iOS/18.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50129", + "user_id": "0", + "ip": "213.87.133.124", + "created": "2024-11-24 17:40:05", + "timestamp": 1732470005, + "date_time": "2024-11-24 17:40:05", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_1_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1.1 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_1_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1.1 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "6378", + "url_parameters": "utm_medium=qr-1&utm_content=orsha-river-club&utm_term=3", + "page_title": "Orsha river club", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/orsha-river-club/" + }, + { + "id": "50130", + "user_id": "0", + "ip": "178.176.217.85", + "created": "2024-11-24 17:48:55", + "timestamp": 1732470535, + "date_time": "2024-11-24 17:48:55", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36", + "location": "Unknown", + "page_id": "9922", + "url_parameters": "utm_medium=qr&utm_content=oharahotel&utm_term=406", + "page_title": "????????? O’hara", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/oharahotel/" + }, + { + "id": "50131", + "user_id": "0", + "ip": "66.102.9.131", + "created": "2024-11-24 17:49:03", + "timestamp": 1732470543, + "date_time": "2024-11-24 17:49:03", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 (compatible; Google-Read-Aloud; +https://support.google.com/webmasters/answer/1061943)", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 (compatible; Google-Read-Aloud; +https://support.google.com/webmasters/answer/1061943)", + "location": "Unknown", + "page_id": "9922", + "url_parameters": "utm_medium=qr&utm_content=oharahotel&utm_term=406", + "page_title": "????????? O’hara", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/oharahotel/" + }, + { + "id": "50132", + "user_id": "0", + "ip": "66.102.9.132", + "created": "2024-11-24 17:49:05", + "timestamp": 1732470545, + "date_time": "2024-11-24 17:49:05", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 (compatible; Google-Read-Aloud; +https://support.google.com/webmasters/answer/1061943)", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 (compatible; Google-Read-Aloud; +https://support.google.com/webmasters/answer/1061943)", + "location": "Unknown", + "page_id": "9922", + "url_parameters": "", + "page_title": "????????? O’hara", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/oharahotel/" + }, + { + "id": "50133", + "user_id": "0", + "ip": "66.102.9.130", + "created": "2024-11-24 17:49:05", + "timestamp": 1732470545, + "date_time": "2024-11-24 17:49:05", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 (compatible; Google-Read-Aloud; +https://support.google.com/webmasters/answer/1061943)", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 (compatible; Google-Read-Aloud; +https://support.google.com/webmasters/answer/1061943)", + "location": "Unknown", + "page_id": "9922", + "url_parameters": "", + "page_title": "????????? O’hara", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/oharahotel/" + }, + { + "id": "50134", + "user_id": "0", + "ip": "83.219.139.45", + "created": "2024-11-24 17:55:13", + "timestamp": 1732470913, + "date_time": "2024-11-24 17:55:13", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 YaBrowser/24.10.5.295.10 SA/3 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 YaBrowser/24.10.5.295.10 SA/3 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "3079", + "url_parameters": "utm_medium=qr&utm_content=amberup&utm_term=211", + "page_title": "Amber Shore", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/amber-shore/" + }, + { + "id": "50135", + "user_id": "0", + "ip": "176.59.52.216", + "created": "2024-11-24 17:58:10", + "timestamp": 1732471090, + "date_time": "2024-11-24 17:58:10", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/27.0 Chrome/125.0.0.0 Mobile Safari/537.36", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/27.0 Chrome/125.0.0.0 Mobile Safari/537.36", + "location": "Unknown", + "page_id": "8164", + "url_parameters": "utm_medium=qr&utm_content=vostok&utm_term=537", + "page_title": "????????? ??????", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/vostok/" + }, + { + "id": "50136", + "user_id": "0", + "ip": "176.59.57.80", + "created": "2024-11-24 18:07:05", + "timestamp": 1732471625, + "date_time": "2024-11-24 18:07:05", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "3256", + "url_parameters": "utm_medium=qr&utm_content=intermark&utm_term=2408", + "page_title": "Intermark – 2408", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/intermark-2408/" + }, + { + "id": "50137", + "user_id": "0", + "ip": "95.108.213.98", + "created": "2024-11-24 18:07:11", + "timestamp": 1732471631, + "date_time": "2024-11-24 18:07:11", + "referred": "", + "agent": "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)", + "location": "Unknown", + "page_id": "0", + "url_parameters": "", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50138", + "user_id": "0", + "ip": "213.180.203.77", + "created": "2024-11-24 18:07:14", + "timestamp": 1732471634, + "date_time": "2024-11-24 18:07:14", + "referred": "", + "agent": "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)", + "location": "Unknown", + "page_id": "6236", + "url_parameters": "", + "page_title": "Touchh ???????", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/" + }, + { + "id": "50139", + "user_id": "0", + "ip": "3.139.101.130", + "created": "2024-11-24 18:07:14", + "timestamp": 1732471634, + "date_time": "2024-11-24 18:07:14", + "referred": "", + "agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/5.0.4.3000 Chrome/47.0.2526.73 Safari/537.36", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/5.0.4.3000 Chrome/47.0.2526.73 Safari/537.36", + "location": "Unknown", + "page_id": "6236", + "url_parameters": "", + "page_title": "Touchh ???????", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/" + }, + { + "id": "50140", + "user_id": "0", + "ip": "176.15.164.13", + "created": "2024-11-24 18:16:04", + "timestamp": 1732472164, + "date_time": "2024-11-24 18:16:04", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "utm_medium=qr&utm_content=postoyalyy-dvor-yam&utm_term=204", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50141", + "user_id": "0", + "ip": "176.15.164.13", + "created": "2024-11-24 18:16:08", + "timestamp": 1732472168, + "date_time": "2024-11-24 18:16:08", + "referred": "https://app.touchh.ru/postoyalyy-dvor-yam/?utm_medium=qr&utm_content=postoyalyy-dvor-yam&utm_term=204", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50142", + "user_id": "0", + "ip": "176.15.164.13", + "created": "2024-11-24 18:16:15", + "timestamp": 1732472175, + "date_time": "2024-11-24 18:16:15", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "utm_medium=qr&utm_content=postoyalyy-dvor-yam&utm_term=204", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50143", + "user_id": "0", + "ip": "176.15.164.13", + "created": "2024-11-24 18:16:32", + "timestamp": 1732472192, + "date_time": "2024-11-24 18:16:32", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "utm_medium=qr&utm_content=postoyalyy-dvor-yam&utm_term=204", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50144", + "user_id": "0", + "ip": "176.15.164.13", + "created": "2024-11-24 18:16:35", + "timestamp": 1732472195, + "date_time": "2024-11-24 18:16:35", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "utm_medium=qr&utm_content=postoyalyy-dvor-yam&utm_term=204", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50145", + "user_id": "0", + "ip": "176.15.164.13", + "created": "2024-11-24 18:16:58", + "timestamp": 1732472218, + "date_time": "2024-11-24 18:16:58", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "utm_medium=qr&utm_content=postoyalyy-dvor-yam&utm_term=204", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50146", + "user_id": "0", + "ip": "195.9.124.10", + "created": "2024-11-24 18:18:13", + "timestamp": 1732472293, + "date_time": "2024-11-24 18:18:13", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "3248", + "url_parameters": "utm_medium=qr&utm_content=forton&utm_term=401", + "page_title": "??????", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/forton/" + }, + { + "id": "50147", + "user_id": "0", + "ip": "195.9.124.10", + "created": "2024-11-24 18:18:15", + "timestamp": 1732472295, + "date_time": "2024-11-24 18:18:15", + "referred": "", + "agent": "MobileSafari/8614.1.25.0.31 CFNetwork/1390 Darwin/22.0.0", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "MobileSafari/8614.1.25.0.31 CFNetwork/1390 Darwin/22.0.0", + "location": "Unknown", + "page_id": "0", + "url_parameters": "", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50148", + "user_id": "0", + "ip": "195.9.124.10", + "created": "2024-11-24 18:18:16", + "timestamp": 1732472296, + "date_time": "2024-11-24 18:18:16", + "referred": "", + "agent": "MobileSafari/8614.1.25.0.31 CFNetwork/1390 Darwin/22.0.0", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "MobileSafari/8614.1.25.0.31 CFNetwork/1390 Darwin/22.0.0", + "location": "Unknown", + "page_id": "0", + "url_parameters": "", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50149", + "user_id": "0", + "ip": "5.167.108.226", + "created": "2024-11-24 18:20:49", + "timestamp": 1732472449, + "date_time": "2024-11-24 18:20:49", + "referred": "https://amo.si/", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "6246", + "url_parameters": "", + "page_title": "Orsha river club welcome", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/orsha-river-club-welcome/" + }, + { + "id": "50150", + "user_id": "0", + "ip": "178.66.158.176", + "created": "2024-11-24 18:23:57", + "timestamp": 1732472637, + "date_time": "2024-11-24 18:23:57", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "utm_medium=qr-7&utm_content=letyourflat&utm_term=BENUA", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50151", + "user_id": "0", + "ip": "178.66.158.176", + "created": "2024-11-24 18:24:00", + "timestamp": 1732472640, + "date_time": "2024-11-24 18:24:00", + "referred": "https://app.touchh.ru/let-your-flat3/?utm_medium=qr-7&utm_content=letyourflat&utm_term=BENUA", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "0", + "url_parameters": "", + "page_title": "", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "" + }, + { + "id": "50152", + "user_id": "0", + "ip": "2a00:1fa0:153:756a:6d4a:5c71:d3c8:2a88", + "created": "2024-11-24 18:39:02", + "timestamp": 1732473542, + "date_time": "2024-11-24 18:39:02", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/27.1 Chrome/125.0.0.0 Mobile Safari/537.36", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/27.1 Chrome/125.0.0.0 Mobile Safari/537.36", + "location": "Unknown", + "page_id": "3081", + "url_parameters": "utm_medium=qr&utm_content=intermark&utm_term=1703", + "page_title": "Intermark", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/intermark/" + }, + { + "id": "50153", + "user_id": "0", + "ip": "2a03:d000:5090:a060:24f3:30ff:fe53:84f3", + "created": "2024-11-24 18:40:50", + "timestamp": 1732473650, + "date_time": "2024-11-24 18:40:50", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 14; 2203129G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.118 Mobile Safari/537.36", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 14; 2203129G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.118 Mobile Safari/537.36", + "location": "Unknown", + "page_id": "11274", + "url_parameters": "utm_medium=qr-1&utm_content=daynight74&utm_term=%D0%AD%D0%BD%D0%B3%D0%B5%D0%BB%D1%8C%D1%81%D0%B0%2C47-%D0%91", + "page_title": "??????????? ???? ? ???? [1] Welcome", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/daynight74-welcome/" + }, + { + "id": "50154", + "user_id": "0", + "ip": "223.104.253.31", + "created": "2024-11-24 18:40:52", + "timestamp": 1732473652, + "date_time": "2024-11-24 18:40:52", + "referred": "", + "agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Mobile/15E148 Safari/604.1", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Mobile/15E148 Safari/604.1", + "location": "Unknown", + "page_id": "3081", + "url_parameters": "utm_medium=qr&utm_content=intermark&utm_term=1703", + "page_title": "Intermark", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/intermark/" + }, + { + "id": "50155", + "user_id": "0", + "ip": "2a03:d000:5090:a060:24f3:30ff:fe53:84f3", + "created": "2024-11-24 18:40:56", + "timestamp": 1732473656, + "date_time": "2024-11-24 18:40:56", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 14; 2203129G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.118 Mobile Safari/537.36", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 14; 2203129G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/123.0.6312.118 Mobile Safari/537.36", + "location": "Unknown", + "page_id": "11274", + "url_parameters": "utm_medium=qr-1&utm_content=daynight74&utm_term=%D0%AD%D0%BD%D0%B3%D0%B5%D0%BB%D1%8C%D1%81%D0%B0%2C47-%D0%91", + "page_title": "??????????? ???? ? ???? [1] Welcome", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/daynight74-welcome/" + }, + { + "id": "50156", + "user_id": "0", + "ip": "176.59.43.123", + "created": "2024-11-24 18:41:34", + "timestamp": 1732473694, + "date_time": "2024-11-24 18:41:34", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/27.0 Chrome/125.0.0.0 Mobile Safari/537.36", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/27.0 Chrome/125.0.0.0 Mobile Safari/537.36", + "location": "Unknown", + "page_id": "8164", + "url_parameters": "utm_medium=qr&utm_content=vostok&utm_term=%D0%A5%D0%BE%D0%BB%D0%BB", + "page_title": "????????? ??????", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/vostok/" + }, + { + "id": "50157", + "user_id": "0", + "ip": "176.59.43.123", + "created": "2024-11-24 18:41:34", + "timestamp": 1732473694, + "date_time": "2024-11-24 18:41:34", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/27.0 Chrome/125.0.0.0 Mobile Safari/537.36", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/27.0 Chrome/125.0.0.0 Mobile Safari/537.36", + "location": "Unknown", + "page_id": "8164", + "url_parameters": "utm_medium=qr&utm_content=vostok&utm_term=%D0%A5%D0%BE%D0%BB%D0%BB", + "page_title": "????????? ??????", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/vostok/" + }, + { + "id": "50158", + "user_id": "0", + "ip": "89.113.159.132", + "created": "2024-11-24 18:48:24", + "timestamp": 1732474104, + "date_time": "2024-11-24 18:48:24", + "referred": "", + "agent": "QR Scanner Android", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "QR Scanner Android", + "location": "Unknown", + "page_id": "3248", + "url_parameters": "utm_medium=qr&utm_content=forton&utm_term=503", + "page_title": "??????", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/forton/" + }, + { + "id": "50159", + "user_id": "0", + "ip": "89.113.159.132", + "created": "2024-11-24 18:48:37", + "timestamp": 1732474117, + "date_time": "2024-11-24 18:48:37", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36", + "location": "Unknown", + "page_id": "3248", + "url_parameters": "utm_medium=qr&utm_content=forton&utm_term=503", + "page_title": "??????", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/forton/" + }, + { + "id": "50160", + "user_id": "0", + "ip": "95.24.145.9", + "created": "2024-11-24 18:49:16", + "timestamp": 1732474156, + "date_time": "2024-11-24 18:49:16", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36", + "location": "Unknown", + "page_id": "8164", + "url_parameters": "utm_medium=qr&utm_content=vostok&utm_term=614", + "page_title": "????????? ??????", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/vostok/" + }, + { + "id": "50161", + "user_id": "0", + "ip": "66.102.9.130", + "created": "2024-11-24 18:49:22", + "timestamp": 1732474162, + "date_time": "2024-11-24 18:49:22", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 (compatible; Google-Read-Aloud; +https://support.google.com/webmasters/answer/1061943)", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 (compatible; Google-Read-Aloud; +https://support.google.com/webmasters/answer/1061943)", + "location": "Unknown", + "page_id": "8164", + "url_parameters": "utm_medium=qr&utm_content=vostok&utm_term=614", + "page_title": "????????? ??????", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/vostok/" + }, + { + "id": "50162", + "user_id": "0", + "ip": "66.102.9.131", + "created": "2024-11-24 18:49:23", + "timestamp": 1732474163, + "date_time": "2024-11-24 18:49:23", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 (compatible; Google-Read-Aloud; +https://support.google.com/webmasters/answer/1061943)", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 (compatible; Google-Read-Aloud; +https://support.google.com/webmasters/answer/1061943)", + "location": "Unknown", + "page_id": "8164", + "url_parameters": "", + "page_title": "????????? ??????", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/vostok/" + }, + { + "id": "50163", + "user_id": "0", + "ip": "66.102.9.132", + "created": "2024-11-24 18:49:23", + "timestamp": 1732474163, + "date_time": "2024-11-24 18:49:23", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 (compatible; Google-Read-Aloud; +https://support.google.com/webmasters/answer/1061943)", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 (compatible; Google-Read-Aloud; +https://support.google.com/webmasters/answer/1061943)", + "location": "Unknown", + "page_id": "8164", + "url_parameters": "", + "page_title": "????????? ??????", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/vostok/" + }, + { + "id": "50164", + "user_id": "0", + "ip": "89.113.159.132", + "created": "2024-11-24 18:58:55", + "timestamp": 1732474735, + "date_time": "2024-11-24 18:58:55", + "referred": "", + "agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36", + "platform": "Unknown", + "version": "Unknown", + "model": "Unknown", + "device": "Unknown", + "UAString": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36", + "location": "Unknown", + "page_id": "3248", + "url_parameters": "utm_medium=qr&utm_content=forton&utm_term=503", + "page_title": "??????", + "type": "page_view", + "last_counter": 1, + "hits": 1, + "honeypot": 0, + "reply": 0, + "page_url": "https://app.touchh.ru/forton/" + } +] \ No newline at end of file