Rename to hkt.sh
This commit is contained in:
123
scripts/nodeseek-checkin.cjs
Normal file
123
scripts/nodeseek-checkin.cjs
Normal file
@@ -0,0 +1,123 @@
|
||||
#!/usr/bin/env node
|
||||
const WebSocket = require("ws");
|
||||
const fs = require("fs");
|
||||
|
||||
const CDP_URL = process.argv[2];
|
||||
const COOKIE_VALUE = "dc4d1551406351a93c09082ea08e2d2e";
|
||||
const TARGET_URL = "https://www.nodeseek.com";
|
||||
const LOG_FILE = process.env.HOME + "/.openclaw/workspace/scripts/checkin.log";
|
||||
|
||||
async function sleep(ms) {
|
||||
return new Promise(r => setTimeout(r, ms));
|
||||
}
|
||||
|
||||
let msgId = 1;
|
||||
function send(ws, method, params = {}, sessionId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const id = msgId++;
|
||||
const payload = { id, method, params };
|
||||
if (sessionId) payload.sessionId = sessionId;
|
||||
ws.send(JSON.stringify(payload));
|
||||
const handler = (data) => {
|
||||
try {
|
||||
const msg = JSON.parse(data);
|
||||
if (msg.id === id) {
|
||||
ws.removeListener("message", handler);
|
||||
if (msg.error) reject(msg.error);
|
||||
else resolve(msg.result);
|
||||
}
|
||||
} catch(e) {}
|
||||
};
|
||||
ws.on("message", handler);
|
||||
});
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const ws = new WebSocket(CDP_URL);
|
||||
|
||||
await new Promise((resolve, reject) => {
|
||||
ws.on("open", resolve);
|
||||
ws.on("error", reject);
|
||||
});
|
||||
|
||||
console.log("Connected to CDP");
|
||||
|
||||
// 创建新标签页
|
||||
const { targetId } = await send(ws, "Target.createTarget", {
|
||||
url: "about:blank"
|
||||
});
|
||||
console.log("Created target:", targetId);
|
||||
|
||||
// 连接到新标签页
|
||||
const { sessionId } = await send(ws, "Target.attachToTarget", {
|
||||
targetId,
|
||||
flatten: true
|
||||
});
|
||||
console.log("Attached to target, sessionId:", sessionId);
|
||||
|
||||
// 设置 cookie
|
||||
await send(ws, "Network.setCookie", {
|
||||
name: "_nk",
|
||||
value: COOKIE_VALUE,
|
||||
domain: ".nodeseek.com",
|
||||
path: "/"
|
||||
}, sessionId);
|
||||
console.log("Cookie set");
|
||||
|
||||
// 启用 Page 域
|
||||
await send(ws, "Page.enable", {}, sessionId);
|
||||
|
||||
// 导航到页面并等待加载
|
||||
const loadPromise = new Promise((resolve) => {
|
||||
const handler = (data) => {
|
||||
try {
|
||||
const msg = JSON.parse(data);
|
||||
if (msg.method === "Page.loadEventFired") {
|
||||
ws.removeListener("message", handler);
|
||||
resolve();
|
||||
}
|
||||
} catch(e) {}
|
||||
};
|
||||
ws.on("message", handler);
|
||||
});
|
||||
|
||||
await send(ws, "Page.navigate", { url: TARGET_URL }, sessionId);
|
||||
console.log("Navigating to:", TARGET_URL);
|
||||
|
||||
await loadPromise;
|
||||
console.log("Page loaded, waiting 8 seconds...");
|
||||
|
||||
await sleep(8000);
|
||||
|
||||
// 执行签到
|
||||
const result = await send(ws, "Runtime.evaluate", {
|
||||
expression: `fetch("/api/attendance", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ random: true })
|
||||
}).then(r => r.json())`,
|
||||
returnByValue: true,
|
||||
awaitPromise: true
|
||||
}, sessionId);
|
||||
|
||||
console.log("Check-in result:", JSON.stringify(result.result?.value || result));
|
||||
|
||||
// 记录日志
|
||||
const logEntry = `[${new Date().toISOString()}] NodeSeek 朦胧签到: ${JSON.stringify(result.result?.value || result)}\n`;
|
||||
fs.appendFileSync(LOG_FILE, logEntry);
|
||||
console.log("Logged to:", LOG_FILE);
|
||||
|
||||
// 关闭标签页
|
||||
await send(ws, "Target.closeTarget", { targetId });
|
||||
console.log("Target closed");
|
||||
|
||||
ws.close();
|
||||
console.log("Done");
|
||||
|
||||
return result.result?.value || result;
|
||||
}
|
||||
|
||||
main().catch(err => {
|
||||
console.error("Error:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user