1
This commit is contained in:
@@ -1,6 +1,11 @@
|
||||
"use strict";
|
||||
|
||||
const { delay, newPublishPage, LOGIN_URLS } = require("./publish_browser.js");
|
||||
const {
|
||||
delay,
|
||||
newPublishPage,
|
||||
LOGIN_URLS,
|
||||
closePublishBrowser,
|
||||
} = require("./publish_browser.js");
|
||||
|
||||
const LOGIN_SELECTORS = {
|
||||
douyin: ["#header-avatar", ".creator-avatar", 'input[type="file"]'],
|
||||
@@ -28,6 +33,34 @@ async function checkLoggedIn(page, platform) {
|
||||
return false;
|
||||
}
|
||||
|
||||
async function resolveUid(page) {
|
||||
try {
|
||||
const uidFromDom = await page.evaluate(() => {
|
||||
const node = document.querySelector("[data-user-id], [data-uid]");
|
||||
return node?.getAttribute("data-user-id") || node?.getAttribute("data-uid") || "";
|
||||
});
|
||||
if (uidFromDom) return String(uidFromDom);
|
||||
} catch {
|
||||
/* ignore */
|
||||
}
|
||||
try {
|
||||
const local = await page.evaluate(() => {
|
||||
const keys = Object.keys(localStorage || {});
|
||||
for (const k of keys) {
|
||||
if (/(uid|user.?id|sec_uid|openid)/i.test(k)) {
|
||||
const v = localStorage.getItem(k);
|
||||
if (v) return v;
|
||||
}
|
||||
}
|
||||
return "";
|
||||
});
|
||||
if (local) return String(local).slice(0, 128);
|
||||
} catch {
|
||||
/* ignore */
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
globalThis.__nodejsMain = async function main(params) {
|
||||
const p = params || {};
|
||||
const platform = String(p.platform || "").trim();
|
||||
@@ -48,6 +81,7 @@ globalThis.__nodejsMain = async function main(params) {
|
||||
while (Date.now() - start < maxMs) {
|
||||
if (await checkLoggedIn(page, platform)) {
|
||||
const cookies = await page.cookies();
|
||||
const resolvedUid = await resolveUid(page);
|
||||
let nickname = "";
|
||||
try {
|
||||
nickname = await page.$eval(
|
||||
@@ -57,11 +91,22 @@ globalThis.__nodejsMain = async function main(params) {
|
||||
} catch {
|
||||
nickname = "已登录用户";
|
||||
}
|
||||
let avatar = "";
|
||||
try {
|
||||
avatar =
|
||||
(await page.$eval(
|
||||
"img.avatar, img[class*='avatar'], .avatar img",
|
||||
(el) => el?.src || "",
|
||||
)) || "";
|
||||
} catch {
|
||||
avatar = "";
|
||||
}
|
||||
return {
|
||||
success: true,
|
||||
message: "登录成功",
|
||||
nickname: nickname || "已登录用户",
|
||||
uid: `user_${Date.now()}`,
|
||||
uid: resolvedUid || `user_${Date.now()}`,
|
||||
avatar,
|
||||
cookies,
|
||||
};
|
||||
}
|
||||
@@ -76,7 +121,12 @@ globalThis.__nodejsMain = async function main(params) {
|
||||
try {
|
||||
await page.close();
|
||||
} catch {
|
||||
/* keep browser for user */
|
||||
/* ignore */
|
||||
}
|
||||
try {
|
||||
await closePublishBrowser(platform, accountId);
|
||||
} catch {
|
||||
/* ignore */
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user