commit f4cbad974805bd59bccac4bb291b1b6e04707be1 Author: Ivanov Matvey Date: Fri Jan 24 23:47:57 2025 +1000 Add 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