Аутентификация на Sharepoint с помощью Puppeteer и Node JS - PullRequest
0 голосов
/ 11 сентября 2018

У меня проблемы с поиском способа аутентификации пользователя.Когда вы запускали Node JS Server вручную, это работало нормально (и, да, его уродливый код):

 if (data.URL.includes("https://share.url.com")) {
        await page.type('#userNameInput', 'user');
        await page.type('#passwordInput', 'pass');
        await page.click('#submitButton');

        await page.waitForNavigation({waitUntil: 'load'});
        await page.waitFor(6000);
    }

Sharepoint не знал моих пользовательских данных, поэтому они переместили меня на страницу входа, где я мог заполнить информацию для входа.а затем перейти на мой запрошенный сайт.Но за это время было сделано 2 изменения: 1. Эта страница входа больше не существует, если информация для входа не найдена, я просто получаю ссылку на страницу, на которой написано «Извините, у вас нет доступа к этой странице».Вторая проблема или изменение заключается в том, что сервер узла запускается службой.

В конце мне просто нужно каким-то образом получить доступ к странице, а затем сделать ее снимок экрана.Но аутентификация доставляет мне неприятности.Теперь мне нужно обойти эту проблему, но я не могу думать о других решениях.

Аутентификация Puppeteer:

await page.authenticate({
    username: "user", 
    password: "pass"
});

Это не работает или использование с аутентификациейзаголовок тоже не работает.

Сохранение кредита пользователя.в браузере (chrom (ium)):

Я пытался сохранить кредит пользователя.для страницы внутри браузера, но это никак не повлияло.

Аутентификация URL:

Я пытался авторизоваться внутри URL, например (https://user:pass@share.url.com/bla/site.aspx)но это не работает.

У меня нет идей, как подойти к этой проблеме, есть ли у вас какие-либо предложения, как я мог бы попробовать это по-другому, или вы видели ошибки в моем коде или в моих мыслях?

Спасибо, Билл Гейтс

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

О

Сохранение кредита пользователя. в браузере (хром (ium)):

У меня была похожая ситуация - я хотел сделать скриншот из Facebook, когда я вошел в систему. Чтобы добиться этого, я сделал следующие шаги:

1) Создан временный пользовательский каталог dir

mkdir /tmp/puppeteer_test

2) Запустите Chrome с этими аргументами

/usr/bin/google-chrome --user-data-dir=/tmp/puppeteer_test --password-store=basic

3) Зайдите на facebook.com, войдите, а затем закройте браузер

4) Запустить кукловода с соответствующими аргументами:

const browser = await puppeteer.launch({
  headless: false,
  executablePath: '/usr/bin/google-chrome',
  args: ['--user-data-dir=/tmp/puppeteer_test']
});
const page = await browser.newPage();
await page.goto('https://facebook.com', { waitUntil: 'networkidle2' });
await page.screenshot({path: 'facebook.png'});
await browser.close();
0 голосов
/ 27 сентября 2018

Я делаю следующее для SharePoint

const browser = await puppeteer.launch();
const page = await browser.newPage();

await page.setViewport({width: 1920, height: 1080});

// Open SharePoint page
console.log("Opening page");
await page.goto('https://mytenant.sharepoint.com/sites/mysite');
await page.waitForNavigation({ waitUntil: 'networkidle0' });
console.log("Page opened");

// Input username
console.log("Inputting username");
await page.type('#i0116', 'user@mytenant.com');
await page.click('#idSIButton9');
await page.waitForNavigation({ waitUntil: 'networkidle0' });
console.log("Username input completed");

// Input password
console.log("Inputting password");
await page.type('#i0118', 'password123');
await page.click('#idSIButton9');
await page.waitForNavigation({ waitUntil: 'networkidle0' });
console.log("Password input completed");

// Stay signed in
console.log("staying signed in");
await page.keyboard.press('Enter');
await page.waitForNavigation({ waitUntil: 'networkidle0' });
console.log("staying signed in completed");

// Wait, because rendering is picky
await page.waitFor(6000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...