<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?

      how to login to gmail using reqeusts in node js?(如何在节点 js 中使用请求登录 gmail?)
      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?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                Gradient Button to background-color blinks on hover(悬停时背景颜色的渐变按钮闪烁)
                How to make hovering over active button not use hover effect?(如何使悬停在活动按钮上不使用悬停效果?)
                html javascript show image hover(html javascript 显示图像悬停)
                How to get css hover values on click?(如何在点击时获得 css 悬停值?)
                Change background image on link hover(更改链接悬停时的背景图像)
                Highlight multiple items on hover#39;s condition(突出显示悬停条件下的多个项目)

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

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

                      <tbody id='tSCRU'></tbody>
                    <tfoot id='tSCRU'></tfoot>
                  • <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>