|
@@ -0,0 +1,273 @@
|
|
|
|
|
+// ==UserScript==
|
|
|
|
|
+// @name AGNT.Hub Task Automation
|
|
|
|
|
+// @namespace http://tampermonkey.net/
|
|
|
|
|
+// @version 0.1
|
|
|
|
|
+// @description Automate AGNT.Hub tasks using current page's Cookie and Headers
|
|
|
|
|
+// @author Jack
|
|
|
|
|
+// @match https://quests.agnthub.ai/*
|
|
|
|
|
+// @grant GM_xmlhttpRequest
|
|
|
|
|
+// @connect hub-api.agnthub.ai
|
|
|
|
|
+// @connect quests.agnthub.ai
|
|
|
|
|
+// ==/UserScript==
|
|
|
|
|
+
|
|
|
|
|
+(function () {
|
|
|
|
|
+ "use strict";
|
|
|
|
|
+
|
|
|
|
|
+ const executeButton = document.createElement("button");
|
|
|
|
|
+ executeButton.textContent = "恶魔城,启动!!";
|
|
|
|
|
+ executeButton.style.position = "fixed";
|
|
|
|
|
+ executeButton.style.top = "20px";
|
|
|
|
|
+ executeButton.style.left = "50%";
|
|
|
|
|
+ executeButton.style.padding = "10px 20px";
|
|
|
|
|
+ executeButton.style.backgroundColor = "#007bff";
|
|
|
|
|
+ executeButton.style.color = "#fff";
|
|
|
|
|
+ executeButton.style.border = "none";
|
|
|
|
|
+ executeButton.style.borderRadius = "5px";
|
|
|
|
|
+ executeButton.style.cursor = "pointer";
|
|
|
|
|
+ executeButton.style.zIndex = "10000";
|
|
|
|
|
+
|
|
|
|
|
+ executeButton.addEventListener("click", function () {
|
|
|
|
|
+ const currentCookie = document.cookie;
|
|
|
|
|
+ const responses = [];
|
|
|
|
|
+
|
|
|
|
|
+ const tasks = [
|
|
|
|
|
+ {
|
|
|
|
|
+ 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": currentCookie,
|
|
|
|
|
+ "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"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ 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": currentCookie,
|
|
|
|
|
+ "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"
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ const tasksList = [
|
|
|
|
|
+ "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"
|
|
|
|
|
+ ];
|
|
|
|
|
+ console.log("开始执行任务列表");
|
|
|
|
|
+
|
|
|
|
|
+ function checkAllRequestsCompleted() {
|
|
|
|
|
+ if (responses.length === tasks.length + tasksList.length) {
|
|
|
|
|
+ showResultDialog(responses);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ tasks.forEach(task => {
|
|
|
|
|
+ GM_xmlhttpRequest({
|
|
|
|
|
+ method: "POST",
|
|
|
|
|
+ url: task.url,
|
|
|
|
|
+ headers: task.headers,
|
|
|
|
|
+ onload: function (response) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const responseJson = JSON.parse(response.responseText);
|
|
|
|
|
+ responses.push(responseJson.message);
|
|
|
|
|
+ console.log(responseJson.message);
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ responses.push(`解析响应出错: ${error.message}`);
|
|
|
|
|
+ console.error("解析响应出错:", error);
|
|
|
|
|
+ }
|
|
|
|
|
+ checkAllRequestsCompleted();
|
|
|
|
|
+ },
|
|
|
|
|
+ onerror: function (error) {
|
|
|
|
|
+ console.error("请求失败:", error);
|
|
|
|
|
+ responses.push(`请求失败:${error.status}`);
|
|
|
|
|
+ checkAllRequestsCompleted();
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+ console.log("零碎任务");
|
|
|
|
|
+ tasksList.forEach(taskId => {
|
|
|
|
|
+ const url = "https://hub-api.agnthub.ai/api/tasks/start/" + taskId;
|
|
|
|
|
+ const headers = {
|
|
|
|
|
+ "Accept": "application/json, text/plain, */*",
|
|
|
|
|
+ "Accept-Encoding": "gzip, deflate, br, zstd",
|
|
|
|
|
+ "Accept-Language": "zh-CN,zh;q=0.9",
|
|
|
|
|
+ "Content-Length": "0",
|
|
|
|
|
+ "Cookie": currentCookie,
|
|
|
|
|
+ "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"
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ function retryRequest(retryCount) {
|
|
|
|
|
+ if (retryCount > 3) {
|
|
|
|
|
+ responses.push(`请求 ${url} 失败,达到最大重试次数`);
|
|
|
|
|
+ checkAllRequestsCompleted();
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ GM_xmlhttpRequest({
|
|
|
|
|
+ method: "POST",
|
|
|
|
|
+ url: url,
|
|
|
|
|
+ headers: headers,
|
|
|
|
|
+ onload: function (response) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ if (response.status === 201) {
|
|
|
|
|
+ const responseJson = JSON.parse(response.responseText);
|
|
|
|
|
+ responses.push(responseJson.description);
|
|
|
|
|
+ console.log(responseJson.description);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ const responseJson = JSON.parse(response.responseText);
|
|
|
|
|
+ console.log(`请求失败: ${responseJson.message}`);
|
|
|
|
|
+ responses.push(`请求失败,状态码:${response.status}`);
|
|
|
|
|
+ retryRequest(retryCount + 1);
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ responses.push(`解析响应出错: ${error.message}`);
|
|
|
|
|
+ console.error("解析响应出错:", error);
|
|
|
|
|
+ retryRequest(retryCount + 1);
|
|
|
|
|
+ }
|
|
|
|
|
+ checkAllRequestsCompleted();
|
|
|
|
|
+ },
|
|
|
|
|
+ onerror: function (error) {
|
|
|
|
|
+ console.error("请求失败:", error);
|
|
|
|
|
+ responses.push(`出现错误:${error.status},重试...`);
|
|
|
|
|
+ retryRequest(retryCount + 1);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ retryRequest(1);
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ function showResultDialog(responses) {
|
|
|
|
|
+ const dialog = document.createElement("div");
|
|
|
|
|
+ dialog.style.position = "fixed";
|
|
|
|
|
+ dialog.style.top = "50%";
|
|
|
|
|
+ dialog.style.left = "50%";
|
|
|
|
|
+ dialog.style.transform = "translate(-50%, -50%)";
|
|
|
|
|
+ dialog.style.padding = "20px";
|
|
|
|
|
+ dialog.style.backgroundColor = "#f9f9f9";
|
|
|
|
|
+ dialog.style.border = "1px solid #ddd";
|
|
|
|
|
+ dialog.style.borderRadius = "10px";
|
|
|
|
|
+ dialog.style.boxShadow = "0 4px 10px rgba(0, 0, 0, 0.1)";
|
|
|
|
|
+ dialog.style.zIndex = "10001";
|
|
|
|
|
+ dialog.style.width = "800px";
|
|
|
|
|
+ dialog.style.textAlign = "center";
|
|
|
|
|
+ dialog.style.maxHeight = "80vh";
|
|
|
|
|
+ dialog.style.overflowY = "auto";
|
|
|
|
|
+
|
|
|
|
|
+ const title = document.createElement("h3");
|
|
|
|
|
+ title.textContent = "操作完成";
|
|
|
|
|
+ title.style.color = "#333";
|
|
|
|
|
+ title.style.marginBottom = "10px";
|
|
|
|
|
+ dialog.appendChild(title);
|
|
|
|
|
+
|
|
|
|
|
+ const resultText = document.createElement("pre");
|
|
|
|
|
+ resultText.textContent = responses.join("\n\n");
|
|
|
|
|
+ resultText.style.whiteSpace = "pre-wrap";
|
|
|
|
|
+ resultText.style.overflowX = "auto";
|
|
|
|
|
+ resultText.style.maxHeight = "300px";
|
|
|
|
|
+ resultText.style.marginBottom = "15px";
|
|
|
|
|
+ resultText.style.padding = "10px";
|
|
|
|
|
+ resultText.style.border = "1px solid #eee";
|
|
|
|
|
+ resultText.style.borderRadius = "5px";
|
|
|
|
|
+ resultText.style.backgroundColor = "#fff";
|
|
|
|
|
+ resultText.style.width = "100%";
|
|
|
|
|
+ dialog.appendChild(resultText);
|
|
|
|
|
+
|
|
|
|
|
+ const buttonContainer = document.createElement("div");
|
|
|
|
|
+ buttonContainer.style.display = "flex";
|
|
|
|
|
+ buttonContainer.style.justifyContent = "center";
|
|
|
|
|
+ buttonContainer.style.gap = "10px";
|
|
|
|
|
+ buttonContainer.style.marginTop = "15px";
|
|
|
|
|
+ dialog.appendChild(buttonContainer);
|
|
|
|
|
+
|
|
|
|
|
+ const refreshButton = document.createElement("button");
|
|
|
|
|
+ refreshButton.textContent = "刷新";
|
|
|
|
|
+ refreshButton.style.padding = "8px 16px";
|
|
|
|
|
+ refreshButton.style.backgroundColor = "#007bff";
|
|
|
|
|
+ refreshButton.style.color = "#fff";
|
|
|
|
|
+ refreshButton.style.border = "none";
|
|
|
|
|
+ refreshButton.style.borderRadius = "5px";
|
|
|
|
|
+ refreshButton.style.cursor = "pointer";
|
|
|
|
|
+ refreshButton.addEventListener("click", function () {
|
|
|
|
|
+ location.reload();
|
|
|
|
|
+ });
|
|
|
|
|
+ buttonContainer.appendChild(refreshButton);
|
|
|
|
|
+
|
|
|
|
|
+ const cancelButton = document.createElement("button");
|
|
|
|
|
+ cancelButton.textContent = "取消";
|
|
|
|
|
+ cancelButton.style.padding = "8px 16px";
|
|
|
|
|
+ cancelButton.style.backgroundColor = "#ccc";
|
|
|
|
|
+ cancelButton.style.color = "#333";
|
|
|
|
|
+ cancelButton.style.border = "none";
|
|
|
|
|
+ cancelButton.style.borderRadius = "5px";
|
|
|
|
|
+ cancelButton.style.cursor = "pointer";
|
|
|
|
|
+ cancelButton.addEventListener("click", function () {
|
|
|
|
|
+ dialog.remove();
|
|
|
|
|
+ });
|
|
|
|
|
+ buttonContainer.appendChild(cancelButton);
|
|
|
|
|
+
|
|
|
|
|
+ document.body.appendChild(dialog);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ document.body.appendChild(executeButton);
|
|
|
|
|
+})();
|