# тестовое задание ### Введение В первую очередь я понял, что необходимо посмотреть реквесты, которые исходят от этих приложений воспользовался снифером & прокси сервером чтобы получить данные 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, но она сказала, что такое не подходит (ну или я её не до конца понял) # Итог я уже понимаю, что меня не возьмут на эту вакансию, но что вы хотели увидеть у кандидата с залачей спарсить приложение на вакансии начальный разработчик? хотя мне было бы интересно написать второй вариант