Compare commits
No commits in common. "37de92c92ee852db7473c7e182f3b81add4feb2e" and "ec69bf1a0c57fd08c16e66cc70e4deca92142343" have entirely different histories.
37de92c92e
...
ec69bf1a0c
2 changed files with 22 additions and 17 deletions
|
|
@ -125,7 +125,7 @@ const ensureLoggedIn = async (page, context) => {
|
|||
if (!cfg.eg_email || !cfg.eg_password) return false;
|
||||
try {
|
||||
await page.goto('https://www.epicgames.com/id/login?lang=en-US&noHostRedirect=true&redirectUrl=' + URL_CLAIM, { waitUntil: 'domcontentloaded' });
|
||||
const emailField = page.locator('input[name="email"], input#email, input[aria-label="Sign in with email"]');
|
||||
const emailField = page.locator('input[name="email"], input#email');
|
||||
const passwordField = page.locator('input[name="password"], input#password');
|
||||
const continueBtn = page.locator('button:has-text("Continue"), button#continue, button[type="submit"]');
|
||||
|
||||
|
|
@ -140,9 +140,7 @@ const ensureLoggedIn = async (page, context) => {
|
|||
await passwordField.fill(cfg.eg_password);
|
||||
const rememberMe = page.locator('input[name="rememberMe"], #rememberMe');
|
||||
if (await rememberMe.count()) await rememberMe.check().catch(() => {});
|
||||
await continueBtn.first().click().catch(async () => {
|
||||
await page.click('button[type="submit"]').catch(() => {});
|
||||
});
|
||||
await page.click('button[type="submit"]');
|
||||
|
||||
// MFA step
|
||||
try {
|
||||
|
|
@ -158,9 +156,7 @@ const ensureLoggedIn = async (page, context) => {
|
|||
} else {
|
||||
await page.locator('input[name="code-input-0"]').pressSequentially(otp.toString());
|
||||
}
|
||||
await continueBtn.first().click().catch(async () => {
|
||||
await page.click('button[type="submit"]').catch(() => {});
|
||||
});
|
||||
await page.click('button[type="submit"]');
|
||||
} catch {
|
||||
// no MFA
|
||||
}
|
||||
|
|
|
|||
|
|
@ -104,18 +104,27 @@ try {
|
|||
process.exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
// If captcha or "Incorrect response" is visible, do not auto-submit; wait for manual solve.
|
||||
const hasCaptcha = await page.locator('.h_captcha_challenge iframe, text=Incorrect response').count() > 0;
|
||||
if (hasCaptcha) {
|
||||
console.warn('Captcha/Incorrect response detected. Please solve manually in the browser.');
|
||||
await notify('epic-games: captcha encountered; please solve manually in browser.');
|
||||
await page.waitForTimeout(cfg.login_timeout);
|
||||
continue;
|
||||
}
|
||||
|
||||
const email = cfg.eg_email || await prompt({ message: 'Enter email' });
|
||||
if (email) {
|
||||
const watchCaptchaChallenge = async () => {
|
||||
try {
|
||||
await page.waitForSelector('.h_captcha_challenge iframe', { timeout: 15000 });
|
||||
console.error('Got a captcha during login (likely due to too many attempts)! You may solve it in the browser, get a new IP or try again in a few hours.');
|
||||
await notify('epic-games: got captcha during login. Please check.');
|
||||
} catch {
|
||||
return;
|
||||
}
|
||||
};
|
||||
const watchCaptchaIncorrect = async () => {
|
||||
try {
|
||||
await page.waitForSelector('p:has-text("Incorrect response.")', { timeout: 15000 });
|
||||
console.error('Incorrect response for captcha!');
|
||||
} catch {
|
||||
return;
|
||||
}
|
||||
};
|
||||
watchCaptchaChallenge();
|
||||
watchCaptchaIncorrect();
|
||||
await page.fill('#email', email);
|
||||
const password = cfg.eg_password || await prompt({ type: 'password', message: 'Enter password' });
|
||||
if (password) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue