mirror of
https://github.com/electron-vite/electron-vite-vue
synced 2025-04-25 22:16:59 +08:00
101 lines
2.7 KiB
TypeScript
101 lines
2.7 KiB
TypeScript
import type { Browser, Page } from 'puppeteer'
|
|
import puppeteer from 'puppeteer-extra'
|
|
import StealthPlugin from 'puppeteer-extra-plugin-stealth'
|
|
import { randomNum } from '../tools'
|
|
import { win } from '../index'
|
|
import { clog } from '../poe/login'
|
|
puppeteer.use(StealthPlugin())
|
|
|
|
let id
|
|
export let browser: Browser | undefined
|
|
/**
|
|
* 登录google
|
|
*/
|
|
export async function login(options, tryCount = 1): Promise<Page> {
|
|
let resolve, reject
|
|
const log = clog(options)
|
|
const p = new Promise((res, rej) => {
|
|
resolve = res
|
|
reject = rej
|
|
})
|
|
id = options.id
|
|
const env = {
|
|
GUSER: options.user,
|
|
GPASS: options.pass
|
|
}
|
|
|
|
if (browser) await browser.close()
|
|
|
|
browser = await puppeteer.launch({ headless: false })
|
|
const page = await browser.newPage()
|
|
await page.setExtraHTTPHeaders({
|
|
'accept-language': 'en-US,en;q=0.9,hy;q=0.8'
|
|
})
|
|
|
|
log('开始访问 gpt')
|
|
await page.goto('https://chat.openai.com/auth/login')
|
|
await page.waitForSelector('button')
|
|
|
|
// log('准备进入 google 登录页')
|
|
const [response] = await Promise.all([
|
|
page.waitForNavigation({ timeout: 10000 }),
|
|
page.click('button')
|
|
])
|
|
// log('已进入 google 登录页')
|
|
|
|
if (!response.ok()) return log('进入 google 登录页失败')
|
|
|
|
log('准备输入账号')
|
|
await page.type('#username', env.GUSER)
|
|
await Promise.all([
|
|
page.waitForNavigation(),
|
|
page.keyboard.press('Enter')
|
|
])
|
|
|
|
log('已输入账号,准备输入密码')
|
|
await page.waitForSelector('#password', { visible: true })
|
|
await page.type('#password', env.GPASS)
|
|
log('已输入密码,开始登录')
|
|
|
|
await Promise.all([
|
|
page.waitForNavigation({ timeout: 10000 }),
|
|
page.keyboard.press('Enter')
|
|
])
|
|
log('登录成功')
|
|
resolve(page)
|
|
|
|
// if (response.ok()) {
|
|
// await page.waitForSelector('input[type="email"]')
|
|
// log('准备输入账号')
|
|
// await page.type('input[type="email"]', env.GUSER)
|
|
// await Promise.all([
|
|
// page.waitForNavigation(),
|
|
// await page.keyboard.press('Enter')
|
|
// ])
|
|
// log('已输入账号,准备输入密码')
|
|
// await page.waitForSelector('input[type="password"]', { visible: true })
|
|
// await page.type('input[type="password"]', env.GPASS)
|
|
// log('已输入密码,开始登录')
|
|
// await Promise.all([
|
|
// page.waitForFunction(() => location.href === 'https://poe.com/'),
|
|
// await page.keyboard.press('Enter')
|
|
// ])
|
|
|
|
// log('登录成功,准备进入 poe')
|
|
|
|
// return page
|
|
// }
|
|
|
|
// if (tryCount < 4) {
|
|
// log(`google 登录失败,准备 ${tryCount} 次重试`)
|
|
// await page.close()
|
|
// return await loginGoogle(options, tryCount + 1)
|
|
// } else {
|
|
// log('google 登录失败,重试次数已达上限')
|
|
// reject('google 登录失败')
|
|
// }
|
|
|
|
return p
|
|
// return Promise.reject('google 登录失败')
|
|
}
|