From f4cbad974805bd59bccac4bb291b1b6e04707be1 Mon Sep 17 00:00:00 2001
From: Ivanov Matvey <matv864@gmail.com>
Date: Fri, 24 Jan 2025 23:47:57 +1000
Subject: [PATCH] Add README.md

---
 README.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)
 create mode 100644 README.md

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..fc6ee63
--- /dev/null
+++ b/README.md
@@ -0,0 +1,60 @@
+# тестовое задание
+
+### Введение
+В первую очередь я понял, что необходимо посмотреть реквесты, которые исходят от этих приложений
+воспользовался снифером & прокси сервером
+чтобы получить данные HTTPS запросов сделал рут на мобильном
+(для 3-их приложений использование система не доверяет собственно подписанным сертификатам, чтобы расшифровывать https на прокси-сервере)
+и увидел это
+
+```
+METHOD: POST
+URL
+https://middle-api.magnit.ru/v2/goods/search
+HEADERS
+    Accept-Encoding: gzip
+authorization: bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjAzNzc1NTZkZGFjY2QwMjA1ZDg4MTNhODYxOTQ3NzUwIiwidHlwIjoiSldUIn0.eyJpc3MiOiJpZC5tYWduaXQucnUiLCJzdWIiOiIwYmQxMDYxNC02MmM1LTQ4OWMtODJiZC1hODU0MTBmNmM5NDkiLCJhdWQiOlsibG95YWx0eS1tb2JpbGUiXSwiZXhwIjoxNzM3NzI1NTE0LCJpYXQiOjE3Mzc3MjQ2MTQsInBob25lIjoiNzk1MDI5MjYwMjEiLCJ1c2VyQ3JlYXRlZEF0IjoxNzM3NDc1OTUyLCJzZXNzaW9uX2lkIjoiYmFjZTQxNTAtMjM4ZC00ZWIzLThjMzgtZjYxYWY3YTg1YmQ4Iiwic2lnbnVwX2RhdGUiOjE3Mzc0NzU5NTIsImlzX2FkdWx0Ijp0cnVlLCJpc19lbXBsb3llZSI6ZmFsc2V9.M_V4FU...
+    Connection: Keep-Alive
+    Content-Length: 172
+    Content-Type: application/json; charset=UTF-8
+    Host: middle-api.magnit.ru
+    User-Agent: okhttp/4.12.0
+    x-app-version: 8.36.0
+    x-device-id: ac3fdfcc-e835-3685-b93c-7a7c7c838506
+    x-device-platform: Android
+    x-device-tag: A391E47D-A38D-4A7C-B26D-DEBD67638CC2_L!9D5D0E4A-4E60-4EF4-83C1-D45DE9BD3906
+    x-platform-version: 29
+    x-request-sign: 97a2cf2d65b6daddd7b9f54ad38f5d5ec99184b0b7b7234c27b01bf769af0c3a0c892aec8d5143b4fa6157e5420916a8a539fa57bde7e66a4665d8bb87651f21
+```
+
+---
+
+дальше, чтобы парсить, есть 2 варианта
+1. подделывать запросы к серверу
+2. автоматизировать оригинальные запросы нужным для нас образом и читать 
+
+### 1. подделываем запросы
+здесь 2 сложности
+1. токен авторизации - этот токен устаревает и его надо обновлять вручную, либо придумать как это автоматизировать
+2. подпись x-request-sign - это 
+- 512 битный хэш, хэш функция неизвестна (может sha512, может blake2, может смесь с чем либо ещё)
+- неизвестный порядок данных запроса и какие в целом данные запроса использовались для подписи 
+    при подделке запроса эти 2 пункта надо знать
+    и по итогу это великий перебор всего возможного (чересчур сложный и долгий перебор для 4 дней дедлайна)
+    или
+    реверс-инжиниринг apk файла (что никак не сходится с вакансией и требует навыков намного больше младшего джуна)
+
+
+### 2. автоматизировать оригинальные запросы 
+здесь я предлагаю написать андроид предложение, которое с помощью CV будет тыкать по экрану
+(выставлять фильтры, листать ленту, перелистывать страницы)
+
+и пока это всё "тыкается", прокси сервер получает все данные запросов
+при хорошей настройке прокси-сервера, и нормально написанном приложении - никаких проблем
+это я предложил вашему HR, но она сказала, что такое не подходит (ну или я её не до конца понял)
+
+
+# Итог
+я уже понимаю, что меня не возьмут на эту вакансию,
+но что вы хотели увидеть у кандидата с залачей спарсить приложение на вакансии начальный разработчик?
+хотя мне было бы интересно написать второй вариант
\ No newline at end of file