You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.3 KiB
JavaScript
68 lines
2.3 KiB
JavaScript
import puppeteer from 'puppeteer-extra';
|
|
import StealthPlugin from 'puppeteer-extra-plugin-stealth';
|
|
import AnonymizeUAPlugin from 'puppeteer-extra-plugin-anonymize-ua';
|
|
import AdblockerPlugin from 'puppeteer-extra-plugin-adblocker';
|
|
import fs from 'fs';
|
|
|
|
puppeteer.use(StealthPlugin());
|
|
puppeteer.use(AnonymizeUAPlugin());
|
|
puppeteer.use(
|
|
AdblockerPlugin({
|
|
blockTrackers: true,
|
|
}
|
|
));
|
|
|
|
// Toggle browser for platform
|
|
const browser_path = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe";
|
|
//const browser_path = '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome';
|
|
|
|
const browser = await puppeteer.launch({
|
|
headless: false,
|
|
defaultViewport: null,
|
|
ignoreDefaultArgs: ["--disable-extensions"],
|
|
dumpio: true,
|
|
args: ["--start-maximized", "--no-sandbox", "--disable-setuid-sandbox"],
|
|
executablePath: browser_path,
|
|
});
|
|
|
|
const page = await browser.newPage();
|
|
await page.setViewport({ width: 1280, height: 800 });
|
|
await page.goto('https://www.bestbuy.com/identity/global/signin');
|
|
|
|
// // Wait for the login form to be available and fill it in
|
|
// await page.waitForSelector('#fld-e');
|
|
|
|
// // Wait for the "Sign in with Google" button to be available and click it
|
|
// await page.waitForSelector('button[aria-labelledby="button-label"]');
|
|
// await page.click('button[aria-labelledby="button-label"]');
|
|
|
|
// // Wait for navigation after clicking the button
|
|
// await page.waitForNavigation();
|
|
|
|
|
|
// // Uncomment and replace with your credentials
|
|
// // await page.type('#fld-e', 'your-email@example.com'); // Replace with your email
|
|
// // await page.type('#fld-p1', 'your-password'); // Replace with your password
|
|
// // await page.click('.cia-form__controls__submit');
|
|
|
|
// Wait for navigation after login -- you have 1 minute!
|
|
await new Promise(resolve => setTimeout(resolve, 60000));
|
|
|
|
// Save cookies
|
|
const cookies = await page.cookies();
|
|
fs.writeFileSync('./cookies.json', JSON.stringify(cookies, null, 2));
|
|
|
|
// Save local storage data
|
|
const localStorageData = await page.evaluate(() => {
|
|
let json = {};
|
|
for (let i = 0; i < localStorage.length; i++) {
|
|
let key = localStorage.key(i);
|
|
json[key] = localStorage.getItem(key);
|
|
}
|
|
return json;
|
|
});
|
|
fs.writeFileSync('./localStorage.json', JSON.stringify(localStorageData, null, 2));
|
|
|
|
console.log('Login session saved.');
|
|
await browser.close();
|