first commit

This commit is contained in:
jack
2025-11-12 17:01:50 +08:00
commit d950d8e527
33 changed files with 42448 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
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!!!
+173
View File
@@ -0,0 +1,173 @@
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"strings"
"sync"
)
type LoginResponse struct {
Data struct {
AccessToken string `json:"access_token"`
TokenType string `json:"token_type"`
Token string `json:"token"`
} `json:"data"`
}
type ClaimResponse struct {
Message string `json:"message"`
}
func dailyClaim3DOS(email, password string) string {
client := &http.Client{}
loginURL := "https://api.dashboard.3dos.io/api/auth/login"
loginPayload := map[string]string{
"email": email,
"password": password,
}
loginPayloadJSON, _ := json.Marshal(loginPayload)
loginReq, _ := http.NewRequest("POST", loginURL, bytes.NewBuffer(loginPayloadJSON))
loginReq.Header.Set("Accept", "application/json, text/plain, */*")
loginReq.Header.Set("Accept-Encoding", "gzip, deflate, br, zstd")
loginReq.Header.Set("Accept-Language", "zh-CN,zh;q=0.9")
loginReq.Header.Set("Content-Type", "application/json")
loginReq.Header.Set("Origin", "https://dashboard.3dos.io")
loginReq.Header.Set("Priority", "u=1, i")
loginReq.Header.Set("Referer", "https://dashboard.3dos.io/")
loginReq.Header.Set("Sec-CH-UA", `"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"`)
loginReq.Header.Set("Sec-CH-UA-Mobile", "?0")
loginReq.Header.Set("Sec-CH-UA-Platform", `"Windows"`)
loginReq.Header.Set("Sec-Fetch-Dest", "empty")
loginReq.Header.Set("Sec-Fetch-Mode", "cors")
loginReq.Header.Set("Sec-Fetch-Site", "same-site")
loginReq.Header.Set("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")
loginResp, err := client.Do(loginReq)
if err != nil {
return fmt.Sprintf("%s: 登录请求失败", email)
}
defer loginResp.Body.Close()
if loginResp.StatusCode != 200 {
return fmt.Sprintf("%s: 登录失败", email)
}
var loginData LoginResponse
json.NewDecoder(loginResp.Body).Decode(&loginData)
token := loginData.Data.AccessToken
if token == "" {
token = loginData.Data.Token
}
tokenType := loginData.Data.TokenType
if token == "" || tokenType == "" {
return fmt.Sprintf("%s: 登录响应中未找到 Token 或 Token 类型", email)
}
authorizationHeader := fmt.Sprintf("%s %s", tokenType, token)
optionsURL := "https://api.dashboard.3dos.io/api/claim-reward"
optionsReq, _ := http.NewRequest("OPTIONS", optionsURL, nil)
optionsReq.Header.Set("Accept", "*/*")
optionsReq.Header.Set("Accept-Encoding", "gzip, deflate, br, zstd")
optionsReq.Header.Set("Accept-Language", "zh-CN,zh;q=0.9")
optionsReq.Header.Set("Access-Control-Request-Headers", "authorization,cache-control,content-type,expires,pragma")
optionsReq.Header.Set("Access-Control-Request-Method", "POST")
optionsReq.Header.Set("Origin", "https://dashboard.3dos.io")
optionsReq.Header.Set("Priority", "u=1, i")
optionsReq.Header.Set("Referer", "https://dashboard.3dos.io/")
optionsReq.Header.Set("Sec-Fetch-Dest", "empty")
optionsReq.Header.Set("Sec-Fetch-Mode", "cors")
optionsReq.Header.Set("Sec-Fetch-Site", "same-site")
optionsReq.Header.Set("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")
optionsResp, err := client.Do(optionsReq)
if err != nil {
return fmt.Sprintf("%s: OPTIONS 请求失败", email)
}
defer optionsResp.Body.Close()
claimURL := "https://api.dashboard.3dos.io/api/claim-reward"
claimPayload := map[string]string{
"id": "daily-reward-api",
}
claimPayloadJSON, _ := json.Marshal(claimPayload)
claimReq, _ := http.NewRequest("POST", claimURL, bytes.NewBuffer(claimPayloadJSON))
claimReq.Header.Set("Accept", "application/json, text/plain, */*")
claimReq.Header.Set("Authorization", authorizationHeader)
claimReq.Header.Set("Cache-Control", "no-cache")
claimReq.Header.Set("Content-Type", "application/json")
claimReq.Header.Set("Expires", "0")
claimReq.Header.Set("Origin", "https://dashboard.3dos.io")
claimReq.Header.Set("Pragma", "no-cache")
claimReq.Header.Set("Priority", "u=1, i")
claimReq.Header.Set("Referer", "https://dashboard.3dos.io/")
claimReq.Header.Set("Sec-CH-UA", `"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"`)
claimReq.Header.Set("Sec-CH-UA-Mobile", "?0")
claimReq.Header.Set("Sec-CH-UA-Platform", `"Windows"`)
claimReq.Header.Set("Sec-Fetch-Dest", "empty")
claimReq.Header.Set("Sec-Fetch-Mode", "cors")
claimReq.Header.Set("Sec-Fetch-Site", "same-site")
claimReq.Header.Set("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")
claimResp, err := client.Do(claimReq)
if err != nil {
return fmt.Sprintf("%s: claim-reward 请求失败", email)
}
defer claimResp.Body.Close()
var claimData ClaimResponse
json.NewDecoder(claimResp.Body).Decode(&claimData)
if claimResp.StatusCode != 200 && claimResp.StatusCode != 429 {
return fmt.Sprintf("%s: claim 报错: %s, 状态码%d", email, claimData.Message, claimResp.StatusCode)
}
return fmt.Sprintf("%s: %s", email, claimData.Message)
}
func main() {
fmt.Println("开始执行...")
accountList := []string{
"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!!!",
}
var wg sync.WaitGroup
results := make(chan string, len(accountList))
for _, account := range accountList {
if account == "" {
continue
}
wg.Add(1)
go func(acc string) {
defer wg.Done()
email, password := strings.Split(acc, "|||")[0], strings.Split(acc, "|||")[1]
results <- dailyClaim3DOS(email, password)
}(account)
}
wg.Wait()
close(results)
for result := range results {
fmt.Println(result)
}
}
+151
View File
@@ -0,0 +1,151 @@
# -*- coding: utf-8 -*-
import os
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()
+33
View File
@@ -0,0 +1,33 @@
package main
import (
"fmt"
)
type Account struct {
Email string
Password string
}
func main() {
// 直接写死的账户信息
accounts := []Account{
{Email: "jack0210_@hotmail.com", Password: "aaaAAA111!!!"},
{Email: "yujieccyj01@hotmail.com", Password: "aaaAAA111!!!"},
{Email: "yujieccyj02@hotmail.com", Password: "aaaAAA111!!!"},
{Email: "yujieccyj03@hotmail.com", Password: "aaaAAA111!!!"},
{Email: "yujieccyj04@hotmail.com", Password: "aaaAAA111!!!"},
{Email: "yujieccyj05@hotmail.com", Password: "aaaaAA111!!!"},
{Email: "yujieccyj06@hotmail.com", Password: "aaaAAA111!!!"},
{Email: "yujieccyj07@hotmail.com", Password: "aaaAAA111!!!"},
{Email: "yujieccyj08@hotmail.com", Password: "aaaAAA111!!!"},
{Email: "yujieccyj09@hotmail.com", Password: "aaaAAA111!!!"},
{Email: "yujieccyj10@hotmail.com", Password: "aaaAAA111!!!"},
}
// 遍历账户并执行操作
for _, account := range accounts {
fmt.Printf("Processing account: %s\n", account.Email)
// 在这里添加您需要的操作
}
}
+10
View File
@@ -0,0 +1,10 @@
anyio==4.8.0
certifi==2025.1.31
h11==0.14.0
httpcore==1.0.7
httpx==0.27.2
idna==3.10
setuptools==75.8.0
sniffio==1.3.1
typing_extensions==4.12.2
wheel==0.45.1