const puppeteer = require('puppeteer');
(async() => {
// Запустим браузер
const browser = await puppeteer.launch({
args: ['--no-sandbox'] }
);
// Откроем новую страницу
const page = await browser.newPage();
const pageURL = 'https://justmarkup.com';
try {
// Попробуем перейти по URL
await page.goto(pageURL);
console.log(`Открываю страницу: ${pageURL}`);
} catch (error) {
console.log(`Не удалось открыть
страницу: ${pageURL} из-за ошибки: ${error}`);
}
// Найдём все ссылки на статьи
const postsSelector = '.main .article h2 a';
await page.waitForSelector(postsSelector, { timeout: 0 });
const postUrls = await page.$$eval(
postsSelector, postLinks => postLinks.map(link => link.href)
);
// Перейдём по каждой из них
for (let postUrl of postUrls) {
// Откроем страницу
try {
await page.goto(postUrl);
console.log('Открываю страницу: ', postUrl);
} catch (error) {
console.log(error);
console.log('Не удалось открыть страницу: ', postUrl);
}
// Получим pathname
let pagePathname = await page.evaluate(() => location.pathname);
pagePathname = pagePathname.replace(/\//g, '-');
console.log('Нашёл pathname:', pagePathname);
// Получим заголовок статьи
const titleSelector = '.article h1';
await page.waitForSelector(titleSelector);
const pageTitle = await page.$eval(
titleSelector, titleSelector => titleSelector.outerHTML
);
console.log('Нашёл заголовок статьи: ', pageTitle);
// Получим контент статьи
const contentSelector = '.article .entry-content';
await page.waitForSelector(contentSelector, { timeout: 0 });
const pageContent = await page.$eval(contentSelector,
contentSelector => contentSelector.innerHTML);
console.log('Нашёл контент: ', pageContent);
}
// Всё сделано, закроем браузер
await browser.close();
process.exit()
})();
@font-face
@import
а с JWT еще проще, выдается, братишка токен JWT с payload на IP, указанный клиентом, и при следующей проверке токена, с другого IP адреса, извлекается записанный в токене IP, и сравнивается с IP, переданный клиентом, в случае расхождения, токен инвалиидруется. При это вся информаци япередается клиентом, и чтение/запись в БД не происходит, если токен вадидируется
Удачи и хорошего дня!