ma_task/README.md
2025-01-24 23:47:57 +10:00

60 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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