Skip to content Skip to sidebar Skip to footer

How To Login To Gmail Using Reqeusts In Node Js?

so what i want to do is to login to gmail using requests or browser mode but requests is preferred so i can get the login cookies so when i want to login again using browser (puppe

Solution 1:

I've actually found a few different ways to solve this issue. The way I did this was using request interceptions to call my getCookies function and then storing those cookies. My setCookies function was called after my page was instantiated and before I send the page to my url.

Solution 1:

const getCookies = async (page) => {
    // Get all cookiesconst cookiesArray = await page._client.send('Network.getAllCookies');

    // Get cookies from arrayconst cookies = await cookiesArray.cookies;

    // Save cookies to file
    fs.writeFile('./cookies.json', JSON.stringify(cookies, null, 4), (err) => {
        if (err) console.log(err);
        return;
    });
}

const setCookies = async (page) => {
    // Get cookies from filelet cookies = JSON.parse(fs.readFileSync('./cookies.json'));

    // Set page cookiesawait page.setCookie(...cookies);
    return
}

Solution 2

const getCookies = async (page) => {
    // Get page cookiesconst cookies = await page.cookies()

    // Save cookies to file
    fs.writeFile('./cookies.json', JSON.stringify(cookies, null, 4), (err) => {
        if (err) console.log(err);
        return
    });
}


const setCookies = async (page) => {
    // Get cookies from file as a stringlet cookiesString = fs.readFileSync('./cookies.json', 'utf8');

    // Parse stringlet cookies = JSON.parse(cookiesString)

    // Set page cookiesawait page.setCookie.apply(page, cookies);
    return
}

Edit: You asked for more context on when the function is called so here's an example of how I use it.

The way I use my function is after a user signs into their google account. I have a link such as this that is meant to redirect to YouTube after a successful login. I setup my page to intercept requests, so whenever there is a request for YouTube, I call my getCookies function and then close the browser after it succeeds.

An example code block looks like this:

// Create page once browser loadslet [page] = await browser.pages();

// Turn on page request interceptionawait page.setRequestInterception(true);

// Add event listener on request
page.on('request', async (req) => {

    // If the request url is what I want, start my functionif (req.url() === 'https://youtube.com/?authuser=0') {
        awaitgetCookies(page);
        await browser.close();
    }

    // If the url is not, continue normal functionality of the page
    req.continue();
});

// Then go to my url once all the listeners are setupawait page.goto('https://accounts.google.com/AccountChooser?service=wise&continue=https://youtube.com')

Post a Comment for "How To Login To Gmail Using Reqeusts In Node Js?"