Загрузка...

Discord joiner

Thread in Python created by Maxim155511 May 17, 2025. 392 views

  1. Maxim155511
    Maxim155511 Topic starter May 17, 2025 83 Apr 22, 2024
    Привет, делаю джоинер с обходом капчи на питоне, но есть некоторые проблемы.

    Короче, есть пост запрос
    ⁡https://discord.com/api/v9/invites/{invitecode}
    ⁡,по которому можно зайти на сервер, в заголовках передаю само собой с токеном.

    Тут начинается веселье, если обнаруживается капча, то по запросу, что выше, приходит статус код 400 и инфа про капчу
    ⁡RESPDISCORD: {"captcha_key": ["You need to update your app to join this server."], "captcha_sitekey": "a9b5fb07-92ff-493f-86fe-352a2803b3df", "captcha_service": "hcaptcha", "captcha_rqdata": "T5TGhdE17CuNjRXGVTMJxewVgQWWvBv6655WHvsyRI7BUrr2XYuhfLYkU1xd0xEhmc7rfxyOB13FIIsibSpdkc5wx2rtQwCdimji5yZSzPOC5Vy3f5zLCgth4MNbEdQ9KI1PdBBl2cv1BbhOguRGa3MJvZYlmePGipmx/gO2", "captcha_rqtoken": "Im5TMzhIaXFvbjNORkxlYTZsMXZEdmtUMzcxZUlVQWhBV1U5bFFiVUVtYjBaOFB0OXd2eDBrMmVHOGlXZzJzMFRJNkYwRGc9PXBqbWNSSmVRNnc1cUNyNHAi.YyRT5A.Afx9SjAbHiTq5c5VKAzA-LP8TUw"}



    Я решил проходить эту капчу с помощью стороннего сервиса, через его API я передаю captcha_sitekey, через некоторое время получаю captcha_key. Так вот, когда лазил в нетворке входа на сервер дискорда, увидел, что когда я решил капчу отправляется такой же пост запрос дискорду, что и выше, но передается
    так же captcha_key, captcha_rqtoken и прочее.

    Вообщем я все это повторил, но у меня не получается. Всё так же запросы возвращают код 400 и ответ, который выглядит примерно вот так:
    ⁡RESPDISCORD: {"captcha_key":["invalid-response"],"captcha_sitekey":"a9b5fb07-92ff-493f-86fe-352a2803b3df","captcha_service":"hcaptcha","captcha_session_id":"1f092198-0235-47ae-b1b4-5cd5d8c7b640","captcha_rqdata":"4HtBO+Bkh1dSW60i/FCtXBEl+M4/wAYtJptUGh25pxGSLrVubUObqzFTsVyWhORTfJA/q495gFs3cyZfzit2rT7u71VaJlWQjX5GJyX1DU1RcS1QSLtFrrb8jW23OqJZrmDvR5H/v9zUjA==FR0oaGXcHxfQXanX","captcha_rqtoken":"IjNSZkoxQyt4STE3RnpkUnNnRHY3a0JNRG9iRGgzVjdVV0pBckFONHcxcUY3TGJmQlJ1L3Vsck16QllLVklCZjdzd0tKd2c9PTdJTmxZTGZMcUJqN1ViT1Ai.aChi6g.C1h5unPYpWZ4O3rWXeCtNZ2Mh2k"}


    Если кто то знает как это правильно делается, прошу помощи.

    Код ниже:
    Python
    import requests as r
    import ssl
    import time
    import json

    ssl._create_default_https_context = ssl._create_unverified_context


    def solve_hcaptcha(sitekey, url):
    API_KEY = ""
    in_url = "https://api.solvecaptcha.com/in.php"
    payload = {
    'key': API_KEY,
    'method': 'hcaptcha',
    'sitekey': sitekey,
    'pageurl': url,
    'json': 1
    }

    response = r.post(in_url, data=payload)
    result = response.json()

    if result.get("status") != 1:
    print("Ошибка при отправке запроса:", result.get("request"))
    return None

    captcha_id = result.get("request")
    print("Получен captcha_id:", captcha_id)

    res_url = "https://api.solvecaptcha.com/res.php"
    params = {
    'key': API_KEY,
    'action': 'get',
    'id': captcha_id,
    'json': 1
    }
    while True:
    res = r.get(res_url, params=params)
    data = res.json()

    if data.get("status") == 1:
    print("Капча успешно решена!")
    return data["request"]
    elif data.get("request") == "CAPCHA_NOT_READY":
    print("Капча ещё не готова, ждем 1 секунду...")
    time.sleep(1)
    else:
    print("Ошибка получения решения:", data.get("request"))
    exit()


    def invite(token, invitecode):
    s = r.session()
    s.headers['authorization'] = token
    resp = s.get('https://discord.com/')
    coo = resp.cookies
    cookies = {
    '__dcfduid': coo.get('__dcfduid'),
    '__sdcfduid': coo.get('__sdcfduid'),
    '__cfruid': coo.get('__cfruid'),
    'locale': 'en-US',
    }
    print("cookies: ", cookies)
    url = f"https://discord.com/invite/{invitecode}"
    resp = s.post(f"https://discord.com/api/v9/invites/{invitecode}", json={}, timeout=20)
    print("RESPDISCORD:", resp.text)
    if resp.text.__contains__("captcha_sitekey"):
    serialized_resp = resp.json()
    captcha_sitekey = serialized_resp.get("captcha_sitekey", "")
    print(captcha_sitekey)
    captcha_key = solve_hcaptcha(captcha_sitekey, url)
    captcha_rqtoken = serialized_resp.get("captcha_rqtoken", "")
    captcha_session_id = serialized_resp.get("captcha_session_id", "")
    print("captcha_key: ", captcha_key)
    print("captcha_rqtoken: ",captcha_rqtoken)
    print("captcha_session_id: ",captcha_session_id)
    s.headers = {
    "authority": "discord.com",
    "method": "POST",
    "path": f"/api/v9/invites/{invitecode}",
    "scheme": "https",
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate, br, zstd",
    "Accept-Language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
    "Authorization": token,
    #"Content-Length": "19",
    "Content-Type": "application/json",
    "Cookie": '; '.join([f"{k}={v}" for k, v in cookies.items() if v is not None]),
    "Origin": "https://discord.com",
    "Priority": "u=1, i",
    "Referer": f"https://discord.com/invite/{invitecode}",
    "Sec-Ch-Ua": '"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',
    "Sec-Ch-Ua-Mobile": "?0",
    "Sec-Ch-Ua-Platform": '"Windows"',
    "Sec-Fetch-Dest": "empty",
    "Sec-Fetch-Mode": "cors",
    "Sec-Fetch-Site": "same-origin",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",
    "X-Context-Properties": "eyJsb2NhdGlvbiI6IkFjY2VwdCBJbnZpdGUgUGFnZSIsImxvY2F0aW9uX2d1aWxkX2lkIjoiMTM2OTY1MDg1ODAyNjg2NDY5MiIsImxvY2F0aW9uX2NoYW5uZWxfaWQiOiIxMzY5NjUwODU4NTI2MTEzODA0IiwibG9jYXRpb25fY2hhbm5lbF90eXBlIjowfQ==",
    "X-Debug-Options": "bugReporterEnabled",
    "X-Discord-Locale": "en-US",
    "X-Discord-Timezone": "Europe/Moscow",
    "X-Captcha-Key": captcha_key,
    "X-Captcha-Rqtoken": captcha_rqtoken,
    "X-Captcha-Session-Id": captcha_session_id,
    "X-Super-Properties": "eyJvcyI6IldpbmRvd3MiLCJicm93c2VyIjoiQ2hyb21lIiwiZGV2aWNlIjoiIiwic3lzdGVtX2xvY2FsZSI6InJ1LVJVIiwiaGFzX2NsaWVudF9tb2RzIjpmYWxzZSwiYnJvd3Nlcl91c2VyX2FnZW50IjoiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEzNi4wLjAuMCBTYWZhcmkvNTM3LjM2IiwiYnJvd3Nlcl92ZXJzaW9uIjoiMTM2LjAuMC4wIiwib3NfdmVyc2lvbiI6IjEwIiwicmVmZXJyZXIiOiIiLCJyZWZlcnJpbmdfZG9tYWluIjoiIiwicmVmZXJyZXJfY3VycmVudCI6IiIsInJlZmVycmluZ19kb21haW5fY3VycmVudCI6IiIsInJlbGVhc2VfY2hhbm5lbCI6InN0YWJsZSIsImNsaWVudF9idWlsZF9udW1iZXIiOjQwMDQ1MywiY2xpZW50X2V2ZW50X3NvdXJjZSI6bnVsbCwiY2xpZW50X2xhdW5jaF9pZCI6IjM1ZTkzOGUwLWU2YjktNGVjMS1hN2QyLWVlMmUyZDUzZWY2MSIsImNsaWVudF9oZWFydGJlYXRfc2Vzc2lvbl9pZCI6IjNlY2RmZmI5LTIyMzAtNDk2NC1hOWVlLTU4MWMzNWU2OWI3YyJ9"
    }
    print(s.headers)
    resp = s.post(f"https://discord.com/api/v9/invites/{invitecode}", json={})
    print("RESPDISCORD:", resp.text)
    print(resp.status_code)
    else: print("Нету капчи")


    token = ""

    if __name__ == "__main__":
    invite(token, "abcd")


     
  2. PersonOfInterest
    PersonOfInterest May 17, 2025 Ever think you're being watched? 156 Nov 15, 2022
    На каждый запрос Дискорд отвечает капчей и каждый раз капча новая. Вы пытаетесь отправить запрос Дискорду с уже включенными "ключами" капчи. По сути Вы отвечаете Дискорду на "реши капчу номер 124" запросом "на держи данные и решение капчи 132".
     
    1. View previous comments (3)
    2. PersonOfInterest
      Maxim155511, ими же и пользуйтесь, обмануть Дискорд не получится.
    3. Maxim155511 Topic starter
      PersonOfInterest, ну так после получения captcha_key от сервиса надо же что-то сделать, чтобы дискорд обработал мой запрос на вступление на дс сервер
  3. Sergo127
    Sergo127 May 23, 2025 1 Aug 18, 2023
    1. Ты не передаёшь captcha_rqdata, хотя Discord его часто требует
    2. Некорректный captcha_key от solvecaptcha (Возможно сервис который ты юзаешь не поддерживает hCaptcha Enterprise - именно его юзает дс)
    3. Отсутствие X-Captcha-Rqdata, либо же некорректный заголовок X-Captcha-* (Все значения нужно передавать как строку, ничего не должно быть None или '') Если поле вообще не нужное то его вообще не передавай даже

    Второй запрос после получения капчи должен выглядеть примерно так

    JSON
    {
    "captcha_key": "РЕШЕНИЕ ОТ СЕРВИСА",
    "captcha_rqtoken": "ТО ЧТО ДАЛ DISCORD",
    "captcha_rqdata": "ТО ЧТО ДАЛ DISCORD"
    }

    А не просто пустой json={} как у тебя сейчас.
     
Loading...
Top