Загрузка...

Requests - Request does not pass

Thread in Python created by b3ast1ns1d3 Jul 29, 2025 at 10:04 PM. 92 views

  1. b3ast1ns1d3
    b3ast1ns1d3 Topic starter Jul 29, 2025 at 10:04 PM 290 Jul 21, 2024
    Здравствуйте. Решил сегодня написать скрипт для автопрохождения игр в магните. Прошил приложение через apk-mitm, установил, скачал http toolkit, запустил, запросы идут, все четко, но регистрация не идет из разряда вообще.

    Запрос выглядит так
    [IMG]
    какой запрос отправляю я
    [IMG]возможно могут быть отличия в значениях переменных, но это сути вот вообще не играет
    и по итогу я получаю это [IMG]мол доступ запрещен, посидел, подумал, поискал библиотеку для генерации x-device-id (запрос зависит от него и x-device-platform, x-app-version), нашел какой то uuid, сделал все, опять доступ запрещен. еще посидел подумал. пришла идея, что возможно в ранних запросах, которые отправляются до самой регистрации номера есть запросы, которые отвечают за предоставление доступа определенному x-device-id. попробовал. скопировал практически все post запросы, в которых как либо фигурирует x-device-id, снова та же проблема, доступ запрещен. Еще посидел подумал, пришла идея, что возможно, в каком то запросе выдается этот x-device-id, посмотрел куки разных запросов, посмотрел headers , тела запросов , мимо. По итогу, сейчас сижу с таким кодом
    Python
    import requests
    import uuid
    import json
    from datetime import datetime, timezone, timedelta

    experiments_and_features_url = 'https://middle-api.magnit.ru/ab/v1/experiments-and-features'
    experiments_and_features_json = {"namespace":"omni_app","split-id":"5cda467f-a111-362e-b156-7abd26fc467a","device-id":"5cda467f-a111-362e-b156-7abd26fc467a","additionals":["feature_id"]}
    random_uid = uuid.uuid4()
    print(random_uid)
    experiments_and_features_headers = {
    "Accept-Encoding": "gzip",
    "Connection": "Keep-Alive",
    "Content-Length": "154", # Note: requests usually handles this automatically
    "Content-Type": "application/json; charset=UTF-8",
    "Host": "middle-api.magnit.ru", # Usually not needed in requests
    "User-Agent": "okhttp/4.12.0",
    "x-app-version": "8.63.0",
    "x-device-id": f"{random_uid}",
    "x-device-platform": "Android",
    "x-device-tag": "FE913FE1-A297-47B5-A8F6-223BB80349C7_46C51FB7-814E-4D26-BDEF-C08215DF6D56",
    "x-platform-version": "34"
    }
    experiments_and_features_requests = requests.post(experiments_and_features_url, headers=experiments_and_features_headers,json=experiments_and_features_json)

    soft_update_url = 'https://middle-api.magnit.ru/mymagnit/v1/soft-update'
    soft_update_url_headers = {
    "Accept-Encoding": "gzip",
    "Connection": "Keep-Alive",
    "User-Agent": "okhttp/4.12.0",
    "x-app-version": "8.63.0",
    "x-device-id": f"{random_uid}",
    "x-device-platform": "Android",
    "x-device-tag": "FE913FE1-A297-47B5-A8F6-223BB80349C7_46C51FB7-814E-4D26-BDEF-C08215DF6D56",
    "x-platform-version": "34"
    }
    soft_update_requests = requests.get(soft_update_url, headers=soft_update_url_headers)
    print(soft_update_requests.text)
    server_time_url = 'https://middle-api.magnit.ru/v1/user/serverTime'
    server_time_headers = {
    "Accept-Encoding": "gzip",
    "Connection": "Keep-Alive",
    "Content-Length": "43", # Note: requests will handle this automatically for you
    "Content-Type": "application/json; charset=UTF-8",
    "User-Agent": "okhttp/4.12.0",
    "x-app-version": "8.63.0",
    "x-device-id": f"{random_uid}",
    "x-device-platform": "Android",
    "x-device-tag": "FE913FE1-A297-47B5-A8F6-223BB80349C7_46C51FB7-814E-4D26-BDEF-C08215DF6D56",
    "x-platform-version": "34"
    }
    tz = timezone(timedelta(hours=3))
    current_time = datetime.now(tz).isoformat(timespec='milliseconds')
    server_time_json = {"userTime":f"{current_time}"}
    server_time_requests = requests.post(server_time_url, headers=server_time_headers, json=server_time_json)
    print(server_time_requests.text)

    experiments_and_features_requests1 = requests.post(experiments_and_features_url, headers=experiments_and_features_headers,json=experiments_and_features_json)

    city_fials_url = 'https://middle-api.magnit.ru/v2/cities?city_fias_id=c2deb16a-0330-4f05-821f-1d09c93331e6'
    city_fials_headers = {
    "Accept-Encoding": "gzip",
    "Connection": "Keep-Alive",
    "Host": "middle-api.magnit.ru",
    "User-Agent": "okhttp/4.12.0",
    "x-app-version": "8.63.0",
    "x-device-id": f"{random_uid}",
    "x-device-platform": "Android",
    "x-device-tag": "FE913FE1-A297-47B5-A8F6-223BB80349C7_46C51FB7-814E-4D26-BDEF-C08215DF6D56",
    "x-platform-version": "34"
    }
    city_fials_requests = requests.post(city_fials_url, headers=city_fials_headers)
    print(city_fials_requests.text)

    recomendation_url = 'https://middle-api.magnit.ru/recoms/v1/recommendations'
    recomendation_headers = {
    "Accept-Encoding": "gzip",
    "baggage": "sentry-environment=production,sentry-public_key=6d4cfb7c8887ad7d38f6d3182a75acda,sentry-release=ru.tander.magnit%408.63.0%2B1174258,sentry-trace_id=f727147d7c69457489db2a93dcfca7f3",
    "Connection": "Keep-Alive",
    "Content-Type": "application/json; charset=UTF-8",
    "sentry-trace": "f727147d7c69457489db2a93dcfca7f3-b20e50b17b1d47ba",
    "User-Agent": "okhttp/4.12.0",
    "x-app-version": "8.63.0",
    "x-device-id": f"{random_uid}",
    "x-device-platform": "Android",
    "x-device-tag": "FE913FE1-A297-47B5-A8F6-223BB80349C7_46C51FB7-814E-4D26-BDEF-C08215DF6D56",
    "x-platform-version": "34"
    }
    recomendation_json = {"catalogType":"2","limit":20,"offset":0,"service":"express","stores":[{"catalogType":"2","code":"997206","service":"express"},{"catalogType":"3","code":"shop_group_location_74265_distr","service":"apteka"}],"type":"main"}
    recomendation_requests = requests.post(recomendation_url, headers=recomendation_headers, json=recomendation_json)
    print(recomendation_requests.text)



    reg_url = 'https://id.magnit.ru/v1/auth/otp'
    reg_json = {"aud":"loyalty-mobile","phone":"79820783265","captcha-token":"captcha-token","forceSMS":True}
    reg_headers = {
    "Accept-Encoding": "gzip",
    "baggage": "sentry-environment=production,sentry-public_key=6d4cfb7c8887ad7d38f6d3182a75acda,sentry-release=ru.tander.magnit@8.63.0+1174258,sentry-trace_id=f727147d7c69457489db2a93dcfca7f3",
    "Connection": "Keep-Alive",
    "Content-Type": "application/json; charset=UTF-8",
    "Host": "id.magnit.ru",
    "sentry-trace": "f727147d7c69457489db2a93dcfca7f3-b20e50b17b1d47ba",
    "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 14; RMX3938 Build/UP1A.231005.007)",
    "x-app-version": "8.63.0",
    "x-device-id": f"{random_uid}",
    "x-device-platform": "Android",
    "x-device-tag": "FE913FE1-A297-47B5-A8F6-223BB80349C7_46C51FB7-814E-4D26-BDEF-C08215DF6D56",
    "x-platform-version": "34",
    "x-request-sign": "00e702727d545926fc7b7054b7f8241e62fb2e1e29340be4ffe0d56bf4e82dd6ec9f0ed1d7bb2f98cecb3fcecb8c219e8ec410eca7f453f7f301fe33046ca73c"
    }
    z = requests.post(reg_url, headers=reg_headers, json=reg_json)
    print(z.text)
    Если кто шарит - помогите пожалуйста.
     
  2. playwright
     
  3. playwright
     
    1. playwright
      playwright, тоже было много проблем с requests, но aiohttp лучше
    2. b3ast1ns1d3 Topic starter
      playwright, но это же просто асинхронность, не думаю, что от этого изменится ответ магнита
  4. Апатия
    во первых капча
    во вторых это скорее всего одноразовый токен, тебе надо разобрать как он генерируется
    [IMG]
     
    1. View previous comments (1)
    2. Апатия
      b3ast1ns1d3, [IMG]
      а почему ты уверен, что его отсутствие должно менять ответ?) этот токен может быть основан на всех предыдущих данных + привязка ко времени, и далеко не факт что сайт обязан на его отсутствие реагировать как то по другому, пустой = точно так же что и неверный
    3. b3ast1ns1d3 Topic starter
      Апатия, [IMG]вот так выглядит ответ сервера, когда я даю ему запрос без одного из 3 параметров. когда же запрос состоит ТОЛЬКО из 3 параметров, то сервер выдает ответ, что доступ запрещен. тебе не кажется, что остальные параметры никак не влияют на ответ от сервера? я хз зачем ты мне скинул captcha-token, со значением captcha-token. если бы там была капча, то значение было бы хер знает какое и капча отображалась при нормальной регистрации с телефона.
    4. b3ast1ns1d3 Topic starter
      Апатия, бля, сорян мужик, был не прав.
      upd: а возможно был прав, хуй пойми.
Top
Loading...