Files
SecScore/scripts/banyou-login-playwright.cjs
T

47 lines
1.3 KiB
JavaScript

const { chromium } = require("playwright")
const LOGIN_URL = "https://care.seewo.com/"
const LOGIN_BUTTON_SELECTOR = "a#index-login-btn"
const USER_PANEL_SELECTOR = "span#user-info-panel"
const LOGIN_TIMEOUT_MS = 10 * 60 * 1000
const toCookieHeader = (cookies) => {
return cookies.map((cookie) => `${cookie.name}=${cookie.value}`).join("; ")
}
;(async () => {
let browser
try {
browser = await chromium.launch({ headless: false })
const context = await browser.newContext()
const page = await context.newPage()
await page.goto(LOGIN_URL, { waitUntil: "domcontentloaded", timeout: 60 * 1000 })
await page.locator(LOGIN_BUTTON_SELECTOR).click({ timeout: 60 * 1000 })
await page.locator(USER_PANEL_SELECTOR).waitFor({
state: "visible",
timeout: LOGIN_TIMEOUT_MS,
})
const cookies = await context.cookies(LOGIN_URL)
const cookieHeader = toCookieHeader(cookies)
if (!cookieHeader) {
throw new Error("No care.seewo.com cookies were captured after login")
}
process.stdout.write(
JSON.stringify({
cookie: cookieHeader,
count: cookies.length,
})
)
} catch (error) {
process.stderr.write(error && error.stack ? error.stack : String(error))
process.exitCode = 1
} finally {
if (browser) {
await browser.close().catch(() => undefined)
}
}
})()