jack 7 mēneši atpakaļ
vecāks
revīzija
573386dfa1
2 mainītis faili ar 154 papildinājumiem un 4 dzēšanām
  1. 150 0
      manual/3dos/3dos_daily.py
  2. 4 4
      message/message_coin_detail.py

+ 150 - 0
manual/3dos/3dos_daily.py

@@ -0,0 +1,150 @@
+# -*- coding: utf-8 -*-
+from httpx import Client
+from concurrent.futures import ThreadPoolExecutor, as_completed
+
+
+def daily_claim_3dos(email, password):
+    # client = Client(proxy="http://127.0.0.1:7890")
+    client = Client()
+
+    login_url = "https://api.dashboard.3dos.io/api/auth/login"
+    login_headers = {
+        "Accept": "application/json, text/plain, */*",
+        "Accept-Encoding": "gzip, deflate, br, zstd",
+        "Accept-Language": "zh-CN,zh;q=0.9",
+        "Content-Type": "application/json",
+        "Origin": "https://dashboard.3dos.io",
+        "Priority": "u=1, i",
+        "Referer": "https://dashboard.3dos.io/",
+        "Sec-CH-UA": '"Chromium";v="130", "Google Chrome";v="130", "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-site",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
+    }
+    login_payload = {
+        "email": email,
+        "password": password
+    }
+
+    try:
+        login_response = client.post(login_url, json=login_payload, headers=login_headers)
+    except Exception as e:
+        print(f"登录请求失败:{e}")
+        return False
+
+    if login_response.status_code == 200:
+        # print(f"{email}: 登录成功!")
+        login_data = login_response.json()
+        # print("登录响应内容:", login_data)
+
+        data = login_data.get("data")
+        token = data.get("access_token") or data.get("token")
+        token_type = data.get("token_type")
+        if not token or not token_type:
+            print("登录响应中未找到 Token 或 Token 类型!")
+            return False
+
+        authorization_header = f"{token_type} {token}"
+    else:
+        print("登录失败!")
+        print("登录响应状态码:", login_response.status_code)
+        print("登录响应内容:", login_response.json())
+        return False
+
+    options_url = "https://api.dashboard.3dos.io/api/claim-reward"
+    options_headers = {
+        "Accept": "*/*",
+        "Accept-Encoding": "gzip, deflate, br, zstd",
+        "Accept-Language": "zh-CN,zh;q=0.9",
+        "Access-Control-Request-Headers": "authorization,cache-control,content-type,expires,pragma",
+        "Access-Control-Request-Method": "POST",
+        "Origin": "https://dashboard.3dos.io",
+        "Priority": "u=1, i",
+        "Referer": "https://dashboard.3dos.io/",
+        "Sec-Fetch-Dest": "empty",
+        "Sec-Fetch-Mode": "cors",
+        "Sec-Fetch-Site": "same-site",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
+    }
+
+    try:
+        options_response = client.options(options_url, headers=options_headers)
+    except Exception as e:
+        print(f"OPTIONS 请求失败:{e}")
+        return False
+
+    # print("OPTIONS 请求响应状态码:", options_response.status_code)
+
+    claim_url = "https://api.dashboard.3dos.io/api/claim-reward"
+    claim_headers = {
+        "Accept": "application/json, text/plain, */*",
+        "Authorization": authorization_header,
+        "Cache-Control": "no-cache",
+        "Content-Type": "application/json",
+        "Expires": "0",
+        "Origin": "https://dashboard.3dos.io",
+        "Pragma": "no-cache",
+        "Priority": "u=1, i",
+        "Referer": "https://dashboard.3dos.io/",
+        "Sec-CH-UA": '"Chromium";v="130", "Google Chrome";v="130", "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-site",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
+    }
+    claim_payload = {
+        "id": "daily-reward-api"
+    }
+
+    try:
+        claim_response = client.post(claim_url, json=claim_payload, headers=claim_headers)
+    except Exception as e:
+        print(f"{email} claim-reward 请求失败:{e}")
+        return False
+
+    message = claim_response.json().get("message")
+
+    if claim_response.status_code not in [200, 429]:
+        print(f"{email} claim 报错: {message}, 状态码{claim_response.status_code}")
+        return False
+
+    result = f"{email}: {message}"
+    return result
+
+
+def main():
+    print("开始执行...")
+
+    account_list = [
+        "jack0210_@hotmail.com|||aaaAAA111!!!",
+        "yujieccyj01@hotmail.com|||aaaAAA111!!!",
+        "yujieccyj02@hotmail.com|||aaaAAA111!!!",
+        "yujieccyj03@hotmail.com|||aaaAAA111!!!",
+        "yujieccyj04@hotmail.com|||aaaAAA111!!!",
+        "yujieccyj05@hotmail.com|||aaaaAA111!!!",
+        "yujieccyj06@hotmail.com|||aaaAAA111!!!",
+        "yujieccyj07@hotmail.com|||aaaAAA111!!!",
+        "yujieccyj08@hotmail.com|||aaaAAA111!!!",
+        "yujieccyj09@hotmail.com|||aaaAAA111!!!",
+        "yujieccyj10@hotmail.com|||aaaAAA111!!!",
+    ]
+
+    with ThreadPoolExecutor(max_workers=len(account_list)) as executor:
+        futures = []
+        for account in account_list:
+            email, password = account.split("|||")
+            futures.append(executor.submit(daily_claim_3dos, email, password))
+
+        for future in as_completed(futures):
+            result = future.result()
+            if result:
+                print(result)
+
+
+if __name__ == "__main__":
+    main()

+ 4 - 4
message/message_coin_detail.py

@@ -69,7 +69,7 @@ def fetch_coin_data(target):
             # text += f'Diluted Market Value: {dilute}\n'
             # text += f'Logo: {logoUrl}\n'
 
-            return text
+            return text + '\n' + ('-' * len(text)) + '\n'
 
 
 def fetch_vix_data():
@@ -159,12 +159,12 @@ def main():
     text = ''
 
     # 获取币币实时价格
-    target_list = ['btc', 'eth', 'sol', 'grass', 'sui', 'doge', 'arb', 'ath', 'move', 'pepe', 'degen']
+    target_list = ['btc', 'eth', 'sol', 'grass', 'sui', 'doge', 'arb', 'ath', 'move', 'pepe', 'degen', 'act', 'plume']
     for target in target_list:
         for retry in range(1, retry_count + 1):
             result = fetch_coin_data(target)
             if result:
-                text += result + '\n'
+                text += result
                 break
             else:
                 print(f"{target} Failed to fetch data. retry: {retry}")
@@ -182,7 +182,7 @@ def main():
             if retry == retry_count:
                 text += f"Failed to fetch VIX data. retry count: {retry}"
 
-    # 获取gas
+    # 获取实时gas
     for retry in range(1, retry_count + 1):
         result = fetch_gas_data()
         if result: