Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const Apify = require('apify');
- const { utils: { log } } = Apify;
- // use process.env with environment variables instead
- const username = 'USERNAME'; // This can be saved in secret env variable
- const password = 'PASSWORD'; // This can be saved in secret env variable
- const saveScreen = async (page, key = 'debug-screen') => {
- const screenshotBuffer = await page.screenshot({ fullPage: true });
- await Apify.setValue(key, screenshotBuffer, { contentType: 'image/png' });
- };
- Apify.main(async () => {
- const requestQueue = await Apify.openRequestQueue();
- await requestQueue.addRequest({ url: 'https://staging-id.ogun.site/account/login'});
- const pseudoUrls = [new Apify.PseudoUrl('https://staging-id.ogun.site/[.*]')];
- let cookies = null;
- const crawler = new Apify.PuppeteerCrawler({
- requestQueue,
- gotoFunction: async ({ request, page }) => {
- // If we are already logged in set cookies for the new page
- if (cookies) await page.setCookie(...cookies);
- /*
- // Debugging requests and responses
- page.on('request', (request) => {
- if (request.method() === 'POST') {
- log.info(`POST: ${request.url()}`);
- log.info(request.postData());
- }
- });
- page.on('response', (response) => {
- log.info(`${response.status()} - ${response.statusText()}: ${response.url()}`);
- });
- */
- // Goto to the url, wait until network is idle, timeout if network is not idle for 5 minutes
- return page.goto(request.url, { waitUntil: 'networkidle2', timeout: 5 * 60 * 1000 });
- },
- handlePageFunction: async ({ request, page }) => {
- // Handle login
- if (request.url === 'https://staging-id.ogun.site/account/login') {
- log.info(`Logging in`);
- // await saveScreen(page, 'login.png');
- // Wait till login form loads
- await page.waitForSelector('.login-page', { timeout: 30 * 60000 });
- log.info(`Login page loaded`);
- // Type username with 10ms delay between key presses
- await page.type('#Username', username, { delay: 10 });
- log.info(`Username entered`);
- // await saveScreen(page, 'login-username.png');
- // Type username with 10ms delay between key presses
- await page.type('#Password', password, { delay: 10 });
- log.info(`Password entered`);
- // await saveScreen(page, 'login-password.png');
- // Click on remember me box
- await page.click('#RememberLogin');
- log.info(`Remember me checked`);
- // await saveScreen(page, 'login-remember-me.png');
- // Click on login buttton
- await page.click('.login-page button[type="submit"]');
- log.info(`Login button pressed`);
- // Wait for settings page to load
- await page.waitForSelector('.settings-page', { timeout: 60 * 1000 });
- log.info('Settings page loaded');
- // await saveScreen(page, 'settings.png');
- // Save cookies
- cookies = await page.cookies();
- }
- // Handle other pages
- const title = await page.title();
- log.info(`Title of ${request.url}: ${title}`);
- await Apify.pushData({ url: page.url(), title });
- await Apify.utils.puppeteer.enqueueLinks({ page, selector: 'a', pseudoUrls, requestQueue });
- }
- });
- await crawler.run();
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement