<bdo id='SNS7N'></bdo><ul id='SNS7N'></ul>

    1. <small id='SNS7N'></small><noframes id='SNS7N'>

    2. <tfoot id='SNS7N'></tfoot>
      <i id='SNS7N'><tr id='SNS7N'><dt id='SNS7N'><q id='SNS7N'><span id='SNS7N'><b id='SNS7N'><form id='SNS7N'><ins id='SNS7N'></ins><ul id='SNS7N'></ul><sub id='SNS7N'></sub></form><legend id='SNS7N'></legend><bdo id='SNS7N'><pre id='SNS7N'><center id='SNS7N'></center></pre></bdo></b><th id='SNS7N'></th></span></q></dt></tr></i><div id='SNS7N'><tfoot id='SNS7N'></tfoot><dl id='SNS7N'><fieldset id='SNS7N'></fieldset></dl></div>
      <legend id='SNS7N'><style id='SNS7N'><dir id='SNS7N'><q id='SNS7N'></q></dir></style></legend>

    3. 如何在节点 js 中使用请求登录 gmail?

      时间:2023-11-28
      1. <legend id='4lSMy'><style id='4lSMy'><dir id='4lSMy'><q id='4lSMy'></q></dir></style></legend>

        • <tfoot id='4lSMy'></tfoot>
          • <bdo id='4lSMy'></bdo><ul id='4lSMy'></ul>
            <i id='4lSMy'><tr id='4lSMy'><dt id='4lSMy'><q id='4lSMy'><span id='4lSMy'><b id='4lSMy'><form id='4lSMy'><ins id='4lSMy'></ins><ul id='4lSMy'></ul><sub id='4lSMy'></sub></form><legend id='4lSMy'></legend><bdo id='4lSMy'><pre id='4lSMy'><center id='4lSMy'></center></pre></bdo></b><th id='4lSMy'></th></span></q></dt></tr></i><div id='4lSMy'><tfoot id='4lSMy'></tfoot><dl id='4lSMy'><fieldset id='4lSMy'></fieldset></dl></div>
              <tbody id='4lSMy'></tbody>

                <small id='4lSMy'></small><noframes id='4lSMy'>

                本文介绍了如何在节点 js 中使用请求登录 gmail?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                所以我想要做的是使用请求或浏览器模式登录到 gmail,但首选请求,所以我可以获取登录 cookie,所以当我想使用浏览器(木偶)再次登录时,我不必再次自动化该过程我可以发送 cookie 我必须打开一个已经登录的 gmail 帐户,我尝试获取 SSID 和 HID cookie 并将它们发送回去,但没有成功

                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 (puppeteer) i dont have to automate the process again i can just send the cookies i have to open an already signed in gmail account , i tried Getting SSID and HID cookies and sending them back but that didnt work

                我正在使用这种方法获取和发送 cookie

                i was getting and sending cookies using this method

                async function restoreCookies(page, cookiesPath) {
                  try {
                    // const cookies = await fs.readJSON(cookiesPath);
                    let buf = fs.readFileSync(cookiesPath);
                    let cookies = JSON.parse(buf);
                    console.log("Loading", cookies.length, "cookies into browser");
                    await page.setCookie(...cookies);
                  } catch (err) {
                    console.log("restore cookie error", err);
                  }
                }
                async function writeCookies(page, cookiesPath) {
                  const client = await page.target().createCDPSession();
                  // This gets all cookies from all URLs, not just the current URL
                  const cookies = (await client.send("Network.getAllCookies"))["cookies"];
                  console.log(cookies)
                  console.log("Saving", cookies.length, "cookies");
                  // fs.writeFileSync(cookiesPath, JSON.stringify(cookies));
                  console.log(cookiesPath)
                  console.log(cookies)
                  // await fs.writeJSON(cookiesPath, cookies);
                }
                

                我试过这种方式

                await page.setCookie(...setcookie);
                

                我可能使用了错误的 cookie

                am proably using the wrong cookies

                推荐答案

                其实我已经找到了几种不同的方法来解决这个问题.我这样做的方法是使用请求拦截来调用我的 getCookies 函数,然后存储这些 cookie.我的 setCookies 函数是在我的页面被实例化之后并且在我将页面发送到我的 url 之前调用的.

                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.

                const getCookies = async (page) => {
                    // Get all cookies
                    const cookiesArray = await page._client.send('Network.getAllCookies');
                
                    // Get cookies from array
                    const 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 file
                    let cookies = JSON.parse(fs.readFileSync('./cookies.json'));
                
                    // Set page cookies
                    await page.setCookie(...cookies);
                    return
                }
                

                解决方案 2

                const getCookies = async (page) => {
                    // Get page cookies
                    const 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 string
                    let cookiesString = fs.readFileSync('./cookies.json', 'utf8');
                
                    // Parse string
                    let cookies = JSON.parse(cookiesString)
                
                    // Set page cookies
                    await page.setCookie.apply(page, cookies);
                    return
                }
                

                您要求提供有关何时调用该函数的更多上下文,因此这是我如何使用它的示例.

                我使用我的功能的方式是在用户登录他们的谷歌帐户之后.我有一个链接,例如 this旨在在成功登录后重定向到 YouTube.我设置我的页面来拦截请求,所以每当有对 YouTube 的请求时,我都会调用我的 getCookies 函数,然后在成功后关闭浏览器.

                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.

                示例代码块如下所示:

                // Create page once browser loads
                let [page] = await browser.pages();
                
                // Turn on page request interception
                await page.setRequestInterception(true);
                
                // Add event listener on request
                page.on('request', async (req) => {
                
                    // If the request url is what I want, start my function
                    if (req.url() === 'https://youtube.com/?authuser=0') {
                        await getCookies(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 setup
                await page.goto('https://accounts.google.com/AccountChooser?service=wise&continue=https://youtube.com')
                

                这篇关于如何在节点 js 中使用请求登录 gmail?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                上一篇:Chrome 扩展:不安全的 JavaScript 尝试使用 URL 访问框架 域、协议和端口必须匹配 下一篇:时事通讯无法隐藏 gmail 上的响应内容以及当我尝试转发电子邮件时

                相关文章

                <small id='tSCRU'></small><noframes id='tSCRU'>

                  <bdo id='tSCRU'></bdo><ul id='tSCRU'></ul>

                <tfoot id='tSCRU'></tfoot>
              1. <legend id='tSCRU'><style id='tSCRU'><dir id='tSCRU'><q id='tSCRU'></q></dir></style></legend>

                    <i id='tSCRU'><tr id='tSCRU'><dt id='tSCRU'><q id='tSCRU'><span id='tSCRU'><b id='tSCRU'><form id='tSCRU'><ins id='tSCRU'></ins><ul id='tSCRU'></ul><sub id='tSCRU'></sub></form><legend id='tSCRU'></legend><bdo id='tSCRU'><pre id='tSCRU'><center id='tSCRU'></center></pre></bdo></b><th id='tSCRU'></th></span></q></dt></tr></i><div id='tSCRU'><tfoot id='tSCRU'></tfoot><dl id='tSCRU'><fieldset id='tSCRU'></fieldset></dl></div>