jack 10 месяцев назад
Сommit
eb48722ee6
8 измененных файлов с 1526 добавлено и 0 удалено
  1. 67 0
      .gitignore
  2. 5 0
      Agnt/config.json
  3. 152 0
      Agnt/main.py
  4. BIN
      dawn/aa.jpg
  5. 1 0
      dawn/config.json
  6. 1009 0
      dawn/main.f4627661.js
  7. 285 0
      dawn/main.py
  8. 7 0
      dawn/test.py

+ 67 - 0
.gitignore

@@ -0,0 +1,67 @@
+.DS_Store
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+env/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+*.egg-info/
+.installed.cfg
+*.egg
+.idea/*
+xml_files/
+
+# PyInstaller
+#  Usually these files are written by a python script from a template
+#  before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*,cover
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+other/split_clash_config/split_config
+ai_news/save_data
+
+manual/clash/clash_each_node
+manual/singbox/singbox_each_node

+ 5 - 0
Agnt/config.json

@@ -0,0 +1,5 @@
+{
+  "cookies": [
+    "privy-session=privy.agnthub.ai; _ga=GA1.1.111069271.1738712945; _ga_HZ81TDGZGW=GS1.1.1741142921.43.0.1741142921.0.0.0; privy-token=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlVZWDlVRXppSll1ajlpeTFEbmc5NnY3OXZQcGMtaV9DdXU0bm0wWnVCVkkifQ.eyJzaWQiOiJjbTZ3ZXY1MGUwMTNuNzQ1dXZ6Ym42NXJqIiwiaXNzIjoicHJpdnkuaW8iLCJpYXQiOjE3NDExNDI5MjQsImF1ZCI6ImNtNmplc3V4ZDAwYTlvam8waTlybHh1ZGsiLCJzdWIiOiJkaWQ6cHJpdnk6Y202cjU0NDRxMDA1MXB1OHg3azdvZ2ZiZiIsImV4cCI6MTc0MTE0NjUyNH0.jRwJ5DohQLNIS5GeedhNEw9AgyVhn3aRk-MwmePH2pBhGjg_E0Fzdc3w7zreQZ2LzvunLVLo0n3VfUV3JW8MoA; privy-id-token=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlVZWDlVRXppSll1ajlpeTFEbmc5NnY3OXZQcGMtaV9DdXU0bm0wWnVCVkkifQ.eyJjciI6IjE3Mzg3MTM0ODAiLCJsaW5rZWRfYWNjb3VudHMiOiJbe1widHlwZVwiOlwidHdpdHRlcl9vYXV0aFwiLFwic3ViamVjdFwiOlwiMTYzOTM3NTIwNjAxNDY3Njk5MlwiLFwidXNlcm5hbWVcIjpcIktpbVJpdmVyYTE4NjYxM1wiLFwibmFtZVwiOlwiS2ltIFJpdmVyYVwiLFwicGZwXCI6XCJodHRwczovL3Bicy50d2ltZy5jb20vcHJvZmlsZV9pbWFnZXMvMTYzOTM3NTYxOTcxNTc0Nzg0My9WcDdRckxERV9ub3JtYWwuanBnXCIsXCJsdlwiOjE3MzkwMzIxODl9LHtcInR5cGVcIjpcIndhbGxldFwiLFwiYWRkcmVzc1wiOlwiMHg1YTU1MDBCYTRDNmU1NjlhMjFhODVFYzU2M0VmOUUyYUNFMTVhNTcyXCIsXCJjaGFpbl90eXBlXCI6XCJldGhlcmV1bVwiLFwid2FsbGV0X2NsaWVudF90eXBlXCI6XCJwcml2eVwiLFwibHZcIjoxNzM4NzUyMjUzfSx7XCJ0eXBlXCI6XCJkaXNjb3JkX29hdXRoXCIsXCJzdWJqZWN0XCI6XCI5NTI1MTE3ODg5MDQyNDcyOTZcIixcInVzZXJuYW1lXCI6XCJ5b3VuZzEyMzcjMFwiLFwibHZcIjoxNzM4NzUzNjYyfV0iLCJpc3MiOiJwcml2eS5pbyIsImlhdCI6MTc0MTE0MjkyNCwiYXVkIjoiY202amVzdXhkMDBhOW9qbzBpOXJseHVkayIsInN1YiI6ImRpZDpwcml2eTpjbTZyNTQ0NHEwMDUxcHU4eDdrN29nZmJmIiwiZXhwIjoxNzQxMTQ2NTI0fQ.i3VtYcYKIh7La7xJyTDoYSEU_HNDOJAZfOvTtxEl2zUAWYVu_1wwDv6Jir_-rN59g1vx19j4pJ2sR0_PJzEULQ"
+  ]
+}

+ 152 - 0
Agnt/main.py

@@ -0,0 +1,152 @@
+# -*- coding: utf-8 -*-
+import time
+import os
+import json
+import httpx
+
+
+class AgntTask:
+    def __init__(self, cookies_list):
+        self.cookies_list = cookies_list
+
+    def daily_task(self):
+        for cookies in self.cookies_list:
+            url = "https://hub-api.agnthub.ai/api/daily-rewards/claim"
+            headers = {
+                "accept": "application/json, text/plain, */*",
+                "accept-encoding": "gzip, deflate, br, zstd",
+                "accept-language": "zh-CN,zh;q=0.9",
+                "content-length": "0",
+                "cookie": cookies,
+                "origin": "https://quests.agnthub.ai",
+                "priority": "u=1, i",
+                "referer": "https://quests.agnthub.ai/",
+                "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"
+            }
+
+            try:
+                response = httpx.post(url, headers=headers)
+                print(response.json())
+            except Exception as e:
+                print(str(e))
+
+    def upload_task(self):
+        for cookies in self.cookies_list:
+            url = "https://hub-api.agnthub.ai/api/tasks/make-ai-laugh/34ecad1e-94df-48ba-b5f4-242fdd9d6546"
+            headers = {
+                "accept": "application/json, text/plain, */*",
+                "accept-encoding": "gzip, deflate, br, zstd",
+                "accept-language": "zh-CN,zh;q=0.9",
+                "content-length": "0",
+                "cookie": cookies,
+                "origin": "https://quests.agnthub.ai",
+                "priority": "u=1, i",
+                "referer": "https://quests.agnthub.ai/",
+                "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"
+            }
+
+            try:
+                response = httpx.post(url, headers=headers)
+                print(response.json())
+            except Exception as e:
+                print(str(e))
+
+    def tasks(self):
+        tasks_list = [
+            "6813de78-f821-4a84-8e8c-3aa89c15b2aa",
+            "fce2e806-a6c7-4de2-abc2-260d13bcfb2f",
+            "0bcb7d19-7c63-4933-96b0-00141ce54dbe",
+            "2f3241c5-29a0-4f47-acf3-9370baf94e74",
+            "d2b35062-40c1-48b8-bca5-c48779ccc66d",
+            "ab2fd158-b894-47bc-aadb-645259b46cc0",
+            "3861cd8e-5393-4285-b6ee-29a5ee301ee5",
+            "1a75844a-a108-4fbd-bfc3-c7476b26b73d",
+            "217e2f67-c110-4ef7-a636-8ac0623df3e8",
+            "49c1db40-8ecf-4454-af0a-fcc81b222135",
+            "2e6ff98c-132b-4886-8f38-6c89d1a7b02a",
+            "9fc278e8-4045-4130-9f52-6ce3b713318c",
+            "4f913da3-58b6-4636-a2c2-912fb01c73d4",
+            "6216f4e1-eafb-4442-a5d4-5b1830f89655",
+            "ebbba0a4-96d9-4fa4-85f9-6fb07fbc282a",
+            "5172f361-d28e-4aa2-a3ba-2adfe5057539",
+            "f81146e9-9ef9-4979-b0a0-437ea5c3e1bb",
+            "22301ec3-3a75-4758-a886-ab768312ffe5",
+            "6debaef3-844e-40f3-be6d-d99a6fd9f2a1",
+            "932d0c29-22ad-4be5-92b4-fc3a2e13aaed",
+            "05027b13-88a3-42a4-992a-0ce2a53068d4",
+            "9e0addfa-51fd-4f3b-a6f2-8dbe301265aa",
+            "4a42ba64-7822-469c-8899-bc07b5dd5d69",
+            "516d941e-b006-4744-a190-6c3207750854",
+            "bf9e7362-5eed-4110-bbe3-1289722a36b3",
+            "7eed7668-e71a-42ed-98ac-a0ded8bc0296",
+            "2cac41ba-36dd-4389-91b6-f8ee840083db",
+            "6f888d49-2b59-4ba9-a7be-199dceff45ab"
+        ]
+
+        for cookies in cookies_list:
+            for tasks in tasks_list:
+                url = "https://hub-api.agnthub.ai/api/tasks/start/" + tasks
+
+                headers = {
+                    "Accept": "application/json, text/plain, */*",
+                    "Accept-Encoding": "gzip, deflate, br, zstd",
+                    "Accept-Language": "zh-CN,zh;q=0.9",
+                    "Content-Length": "0",
+                    "Cookie": cookies,
+                    "Origin": "https://quests.agnthub.ai",
+                    "Priority": "u=1, i",
+                    "Referer": "https://quests.agnthub.ai/",
+                    "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"
+                }
+
+                for retry in range(1, 4):
+                    try:
+                        response = httpx.post(url, headers=headers)
+
+                        if response.status_code == 201:
+                            print("请求成功!")
+                            print(response.json())
+                            break
+                        else:
+                            print(f"请求失败,状态码:{response.status_code}")
+                            print(response.text)
+                    except Exception as e:
+                        print(f"出现错误:{e}\n重试...")
+
+                time.sleep(0.5)
+
+
+if __name__ == '__main__':
+    config_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "config.json")
+    try:
+        with open(config_path, "r", encoding="utf-8") as file:
+            config_data = json.load(file)
+    except Exception as e:
+        print(f"读取配置失败:{e}")
+        exit(1)
+
+    cookies_list = config_data.get("cookies", [])
+
+    A = AgntTask(cookies_list)
+
+    A.daily_task()
+    A.upload_task()
+    A.tasks()


+ 1 - 0
dawn/config.json

@@ -0,0 +1 @@
+{"version": "1.1.3", "username": "yujieccyj01@hotmail.com", "password": "aaaAAA111!!!", "appid": "67bc1b9b20f45f80e7c94634"}

Разница между файлами не показана из-за своего большого размера
+ 1009 - 0
dawn/main.f4627661.js


+ 285 - 0
dawn/main.py

@@ -0,0 +1,285 @@
+import base64
+import datetime
+import json
+import logging
+import os.path
+import time
+import requests
+import ddddocr
+
+# 配置日志
+logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
+
+# 配置文件路径
+CONFIG_FILE = "config.json"
+
+
+# 初始化配置
+def init_config():
+    if not os.path.exists(CONFIG_FILE):
+        with open(CONFIG_FILE, "w", encoding="utf-8") as f:
+            json.dump({}, f)
+
+
+# 读取配置
+def load_config():
+    with open(CONFIG_FILE, "r", encoding="utf-8") as f:
+        return json.load(f)
+
+
+# 保存配置
+def save_config(config):
+    with open(CONFIG_FILE, "w", encoding="utf-8") as f:
+        json.dump(config, f, indent=4)
+
+
+# 获取版本号
+def get_version(config):
+    if "version" not in config:
+        # 这里可以添加获取版本号的逻辑
+        config["version"] = "1.1.3"
+        save_config(config)
+    return config["version"]
+
+
+# 获取App ID
+def get_app_id(config):
+    if "appid" not in config:
+        response = requests.get(
+            f"https://www.aeropres.in/chromeapi/dawn/v1/appid/getappid?app_v={get_version(config)}",
+            proxies=config.get("proxy"),
+            headers={
+                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"},
+            verify=False,
+            timeout=15
+        )
+        if response.status_code != 200:
+            raise Exception("获取appid失败")
+        config["appid"] = response.json()["data"]["appid"]
+        save_config(config)
+    return config["appid"]
+
+
+# 获取Puzzle ID
+def get_puzzle_id(config):
+    app_id = get_app_id(config)
+    headers = {
+        "Accept": "*/*",
+        "Accept-Encoding": "gzip, deflate, br, zstd",
+        "Accept-Language": "zh-CN,zh;q=0.9",
+        "Origin": "chrome-extension://fpdkjdnhkakefebpekbdhillbhonfjjp",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+        "priority": "u=1, i",
+        "sec-ch-ua": '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"',
+        "sec-ch-ua-mobile": "?0",
+        "sec-ch-ua-platform": '"Windows"',
+        "sec-fetch-dest": "empty",
+        "sec-fetch-mode": "cors",
+        "sec-fetch-site": "cross-site",
+    }
+    response = requests.get(
+        f"https://www.aeropres.in/chromeapi/dawn/v1/puzzle/get-puzzle?appid={app_id}",
+        proxies=config.get("proxy"),
+        headers=headers,
+        verify=False,
+        timeout=15
+    )
+    if response.status_code not in [200, 201]:
+        raise Exception("获取puzzle_id失败")
+    res_json = response.json()
+    if not res_json.get('success', False):
+        raise Exception("获取puzzle_id结果失败")
+    return res_json["puzzle_id"]
+
+
+# 获取Puzzle Code
+def get_puzzle_code(config):
+    puzzle_id = get_puzzle_id(config)
+    headers = {
+        "Accept": "*/*",
+        "Accept-Encoding": "gzip, deflate, br, zstd",
+        "Accept-Language": "zh-CN,zh;q=0.9",
+        "Origin": "chrome-extension://fpdkjdnhkakefebpekbdhillbhonfjjp",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+        "priority": "u=1, i",
+        "sec-ch-ua": '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"',
+        "sec-ch-ua-mobile": "?0",
+        "sec-ch-ua-platform": '"Windows"',
+        "sec-fetch-dest": "empty",
+        "sec-fetch-mode": "cors",
+        "sec-fetch-site": "cross-site",
+    }
+    response = requests.get(
+        f"https://www.aeropres.in/chromeapi/dawn/v1/puzzle/get-puzzle-image?puzzle_id={puzzle_id}&appid={get_app_id(config)}",
+        proxies=config.get("proxy"),
+        headers=headers,
+        verify=False,
+        timeout=15
+    )
+    if response.status_code != 200:
+        raise Exception("获取puzzle_url失败")
+    res_json = response.json()
+    if not res_json.get('success', False):
+        raise Exception("获取puzzle_url结果失败")
+    imgBase64 = res_json["imgBase64"]
+    data = base64.b64decode(imgBase64)
+    return get_code_with_img(puzzle_id, img_data=data)
+
+
+# 获取验证码
+def get_code_with_img(puzzle_id, img_data):
+    print(puzzle_id)
+    with open(f'{str(int(time.time()))}.jpg', 'wb') as file:
+        file.write(img_data)
+    return False
+
+
+# 获取Token
+def get_token(config):
+    if "token" not in config:
+        retry_count = config.get('retry', 3)
+        code = ""
+        puzzle_id = ""
+        while retry_count > 0:
+            try:
+                puzzle_id = get_puzzle_id(config)
+                code = get_puzzle_code(config)
+                break
+            except Exception as e:
+                logging.error(f"获取token失败,{e}")
+                retry_count -= 1
+        if not code or not puzzle_id:
+            return False
+        data = {
+            "username": config.get("username", ""),
+            "password": config.get("password", ""),
+            "logindata": {"_v": {"version": get_version(config)},
+                          "datetime": datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S.%fZ")[:-3]},
+            "puzzle_id": puzzle_id,
+            "ans": code,
+            "appid": get_app_id(config),
+        }
+        headers = {
+            "Accept": "*/*",
+            "Accept-Encoding": "gzip, deflate, br, zstd",
+            "Accept-Language": "zh-CN,zh;q=0.9",
+            "Origin": "chrome-extension://fpdkjdnhkakefebpekbdhillbhonfjjp",
+            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+            "priority": "u=1, i",
+            "sec-ch-ua": '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"',
+            "sec-ch-ua-mobile": "?0",
+            "sec-ch-ua-platform": '"Windows"',
+            "sec-fetch-dest": "empty",
+            "sec-fetch-mode": "cors",
+            "sec-fetch-site": "cross-site",
+        }
+        retry_count = config.get('retry', 3)
+        while retry_count > 0:
+            try:
+                response = requests.post(
+                    f"https://www.aeropres.in/chromeapi/dawn/v1/user/login/v2?appid={get_app_id(config)}",
+                    json=data,
+                    proxies=config.get("proxy"),
+                    verify=False,
+                    timeout=15,
+                    headers=headers
+                )
+                if response.status_code != 200:
+                    raise Exception("获取token失败")
+                res_json = response.json()
+                if not res_json.get('success', False):
+                    raise Exception("获取token结果失败")
+                config["token"] = res_json["data"]["token"]
+                save_config(config)
+                break
+            except Exception as e:
+                logging.error(f"获取token失败,{e}")
+                retry_count -= 1
+    return config.get("token", "")
+
+
+# 获取积分
+def get_point(config):
+    headers = {
+        "Authorization": f"Bearer {config.get('token', '')}",
+        "Content-Type": "application/json",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+        "sec-ch-ua": '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"',
+        "sec-ch-ua-mobile": "?0",
+        "sec-ch-ua-platform": '"Windows"',
+    }
+    response = requests.get(
+        f"https://www.aeropres.in/api/atom/v1/userreferral/getpoint?appid={get_app_id(config)}",
+        headers=headers,
+        proxies=config.get("proxy"),
+        verify=False,
+        timeout=15
+    )
+    if response.status_code != 200:
+        raise Exception(f"获取积分失败,{response.text}")
+    if not response.json().get('success', False):
+        raise Exception(f"获取积分失败,{response.json()}")
+
+
+# 保持活跃
+def keep_alive(config):
+    headers = {
+        "Authorization": f"Bearer {config.get('token', '')}",
+        "Content-Type": "application/json",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+    }
+    data = {
+        "username": config.get("username", ""),
+        "extensionid": "fpdkjdnhkakefebpekbdhillbhonfjjp",
+        "numberoftabs": 0,
+        "_v": get_version(config)
+    }
+    response = requests.post(
+        f"https://www.aeropres.in/chromeapi/dawn/v1/userreward/keepalive?appid={get_app_id(config)}",
+        json=data,
+        headers=headers,
+        proxies=config.get("proxy"),
+        verify=False,
+        timeout=15
+    )
+    if response.status_code != 200:
+        raise Exception(f"保持活跃失败,{response.text}")
+    if not response.json().get('success', False):
+        raise Exception(f"保持活跃失败,{response.json()}")
+
+
+# 主函数
+def main():
+    init_config()
+    config = load_config()
+    while True:
+        token = get_token(config)
+        if not token:
+            time.sleep(60)
+            del config['token']
+            save_config(config)
+            continue
+        retry_count = 5
+        while retry_count > 0:
+            err = False
+            try:
+                get_point(config)
+            except Exception as e:
+                logging.error(f"获取积分失败,{e}")
+                err = True
+            try:
+                keep_alive(config)
+            except Exception as e:
+                logging.error(f"保持活跃失败,{e}")
+                err = True
+            if not err:
+                retry_count = 5
+            else:
+                retry_count -= 1
+            if retry_count <= 0:
+                break
+            time.sleep(5 * 60)
+
+
+if __name__ == '__main__':
+    main()

+ 7 - 0
dawn/test.py

@@ -0,0 +1,7 @@
+# -*- coding: utf-8 -*-
+import ddddocr
+
+with open('aa.jpg', 'rb') as f:
+    img_bytes = f.read()
+res = ddddocr.DdddOcr(show_ad=False).classification(img_bytes)
+print(res)

Некоторые файлы не были показаны из-за большого количества измененных файлов