mirror of
https://github.com/SECTL/SecScore.git
synced 2026-07-19 06:04:22 +08:00
47 lines
1.3 KiB
JavaScript
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)
|
|
}
|
|
}
|
|
})()
|