Как передать учетные данные в Google в Puppeteer для Dynami c Rendering? - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь получить доступ к полному динамически отображаемому DOM для моего документа Google.

Я создал облачную функцию Google, в которой использовал Puppeteer. Он дает мне правильно отформатированный вывод (динамически отображается, поскольку он предоставляет приложению браузер env), но он обращается к документу publi c (без входа в систему), поэтому просто предоставляет теги / свойства html для некоторых списков меню (и не все).

Теперь мне нужно передать кредиты / разрешить Puppeteer пропустить авторизацию для доступа к входу в систему до c. Пожалуйста, помогите мне в этом.

Код кукловода:

    exports.getDOM = (req, res) => {
  const puppeteer = require('puppeteer');
  const url = "https://docs.google.com/document/d/doc_id/edit";
  let image;

  async function main() {
    const browser = await puppeteer.launch({args: [
    '--disable-web-security', '--no-sandbox',
  ],
      headless: true,
      //args: ['--no-sandbox', '--disable-setuid-sandbox'],
    });
    const page = await browser.newPage();
    await page.goto(url, { waitUntil: "networkidle2" });
    console.log('Clicking on google login...');
    await page.click('.button--withChrome.button--large');
    await page.mainFrame().waitForSelector('#identifierId');
    console.log('Typing email...');
    await page.type('#identifierId', 'user@gmail.com');
    await page.mainFrame().waitForSelector('#identifierNext');
    console.log('Clicking next button...');
    await page.click('#identifierNext');
    await page.waitFor(3000);
    image = await page.content(); 
    console.log('Closing browser...');
    await browser.close();
  }

  main()
  .then(url => {
    if (req.method === 'OPTIONS') {
    // Send response to OPTIONS requests
    res.set('Access-Control-Allow-Methods', 'GET');
    res.setHeader("content-type", "text/html");
    res.set('Access-Control-Allow-Headers', 'Content-Type');
    res.set('Access-Control-Allow-Origin', 'https://docs.google.com');
    res.set('Access-Control-Allow-Credentials', 'true');
    res.status(200).send(image);
    }
    return res;
  })
  .catch(err => {
    console.error(err);
    res.status(500).send("An Error occured" + err);  
  })
};

Как только я передаю учетные данные, я получаю сообщение об ошибке:

Доступ к XMLHttpRequest в 'https://play.google.com/log?format=json&hasfast=true&authuser=0 'от источника' https://docs.google.com 'была заблокирована политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: значение' Access-Control- Заголовок Allow-Origin 'в ответе не должен быть подстановочным знаком' * ', когда режим учетных данных запроса -' include '. Режим учетных данных запросов, инициируемых XMLHttpRequest, контролируется атрибутом withCredentials. 4046832785-client_js_prod_kix_core. js: 264 POST https://play.google.com/log?format=json&hasfast=true&authuser=0 net :: ERR_FAILED

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...