Мне нужно использовать Apify и Zapier для автоматизации i) входа на веб-страницу, защищенную паролем, и ii) нажатия кнопки. Как я могу это сделать?
Я думаю, что я должен использовать Puppeteer в Actor, но я не уверен, как.
Целевые URL время от времени будут меняться. Их формат https://studio.example.com/products/videocloud/media/videos/{id_code}
, где {id_code}
, например, 6091481925001
.
1. Zapier
Zapier должен вызвать Apify Actor для выполнения работы. Действие в существующем zap уже имеет доступ к динамическому {id_code}
. Дополнительное действие должно «Запускать Actor» для Apify, передавая либо {id_code}
, либо полный URL https://studio.example.com/products/videocloud/media/videos/6091481925001
в Apify для запуска.
Как правильно передать значение в Apify через «Тело ввода»«?
![enter image description here](https://i.stack.imgur.com/aiNC6.png)
2. Вход в систему
При доступе, не прошедшем проверку подлинности, страница перенаправляется в форму входа в https://signin.example.com/?redirect=https%3A%2F%2Fstudio.example.com%2Fproducts%2Fvideocloud%2Fmedia%2Fvideos%2F6091481925001
с:
- «Адрес электронной почты» (
input
с id="email"
и name="email"
) - «Пароль» (
input
с id="password"
и name="password"
) - Кнопка «Вход» (
button
с id="signinButton"
и type="submit"
)
Как использовать Актера для входа в систему здесь?
![enter image description here](https://i.stack.imgur.com/I4xVi.png)
3. Нажмите
. После аутентификации появится целевая страница. Он имеет панель кнопок, включающую кнопку «Активировать» (button
, чей дочерний текст span
должен иметь значение «Активировать» только в том случае, если нам разрешено нажимать на него).
(Для информации - после нажатиятекст кнопки должен стать «Деактивировать»).
Как получить Apify, чтобы нажать здесь кнопку «Активировать»?
![enter image description here](https://i.stack.imgur.com/rWTdW.png)
Насколько я понимаю, это не работа по очистке , поскольку я не собираюсь возвращать данные с веб-страницы, поэтому я не должен использовать apify / puppeteer-scraper или apify / web-scraper .
Обновление:
Пока у меня есть следующее. Тем не менее, Puppeteer внутри Apify истекает - при довольно длинных значениях до 9000 мсек, предполагая, что это не обязательно проблема загрузки страницы (?)
const Apify = require('apify');
Apify.main(async () => {
// Get credentials
const { EMAIL, PASSWORD } = Apify.getEnv(); // Docs for using values: https://apify.com/docs/actor#source-env-vars
// Launch Puppeteer
const browser = await Apify.launchPuppeteer();
const page = await browser.newPage();
await page.goto('https://signin.example.com/login');
// Login
await page.type('#email', process.env.EMAIL);
console.log('Attempted to enter email');
await page.type('#password', process.env.PASSWORD);
console.log('Attempted to enter password');
await page.click('#signinButton');
console.log('Attempted to click button');
// Times-out here
await page.waitForNavigation();
console.log('Attempted to wait for navigation');
// Get cookies
const cookies = await page.cookies();
console.log('Attempted to wait for cookies');
await browser.close();
console.log('Done.');
});