Как переписать скрипт под выполнение у посетителя в браузере?
Есть такой скрипт, отлично работающий при выполнении из консоли сервера, который по итогу выдает html код формы с страницы сайта.
Как переписать данный скрипт таким образом, чтобы его мог выполнить обычный посетитель из своего браузера, посетив страницу моего сайта?
const puppeteer = require('puppeteer'); const path = require('path'); (async () => { const browser = await puppeteer.launch({ args: ['--no-sandbox'], headless: 'new' }); const page = await browser.newPage(); try { // Перейти на страницу с формой await page.goto('https://www.tinkoff.ru/payments/card-to-card/'); console.log('Navigated form'); // Ожидание 3 секунд await page.waitForTimeout(3000); // Заполнение полей формы await page.type('input[name="cardNumber"]', ' 2202207187345312'); await page.waitForTimeout(1000); // Заполнение полей формы await page.type('input[name="date"]', '0626'); await page.waitForTimeout(1000); // Клик по кнопкам с определенным значением const valuesToClick = ['2', '2', '2']; // Значения для клика for (const value of valuesToClick) { await page.$$eval('.Keyboard-module__key_EGeG2[data-value="' + value + '"]', buttons => { buttons.forEach(button => button.click()); }); await page.waitForTimeout(300); // Пауза между кликами } await page.waitForTimeout(1000); // Получение всех полей с атрибутом name="cardNumber" const cardNumberFields = await page.$$('input[name="cardNumber"]'); // Проверка, что найдено более одного поля с атрибутом name="cardNumber" if (cardNumberFields.length > 1) { // Заполнение поля формы вторым значением (второе поле) await cardNumberFields[1].type('2202206407759229'); } else { } await page.waitForTimeout(1000); // Заполнение полей формы await page.type('input[name="moneyAmount"]', '1000'); await page.waitForTimeout(3000); const submitButton = await page.$('button[type="submit"]'); if (submitButton) { await submitButton.click(); } // Подождать некоторое время на случай, если форма генерируется динамически await page.waitForSelector('form input[name="creq"]', { timeout: 20000 }); // Получение и вывод полного HTML-кода формы в консоль const formHTML = await page.evaluate(() => { const form = document.querySelector('form input[name="creq"]').closest('form'); return form ? form.outerHTML : null; }); if (formHTML) { console.log('Form HTML:', formHTML); } else { console.log('Form with creq not found'); } // Закрыть браузер await browser.close(); } catch (error) { console.error('An error occurred:', error); } })(); |
const puppeteer = require('puppeteer'); const path = require('path'); (async () => { const browser = await puppeteer.launch({ args: ['--no-sandbox'], headless: 'new' }); const page = await browser.newPage(); try { // Перейти на страницу с формой await page.goto('https://www.tinkoff.ru/payments/card-to-card/'); console.log('Navigated form'); // Ожидание 3 секунд await page.waitForTimeout(3000); // Заполнение полей формы await page.type('input[name="cardNumber"]', ' 2202207187345312'); await page.waitForTimeout(1000); // Заполнение полей формы await page.type('input[name="date"]', '0626'); await page.waitForTimeout(1000); // Клик по кнопкам с определенным значением const valuesToClick = ['2', '2', '2']; // Значения для клика for (const value of valuesToClick) { await page.$$eval('.Keyboard-module__key_EGeG2[data-value="' + value + '"]', buttons => { buttons.forEach(button => button.click()); }); await page.waitForTimeout(300); // Пауза между кликами } await page.waitForTimeout(1000); // Получение всех полей с атрибутом name="cardNumber" const cardNumberFields = await page.$$('input[name="cardNumber"]'); // Проверка, что найдено более одного поля с атрибутом name="cardNumber" if (cardNumberFields.length > 1) { // Заполнение поля формы вторым значением (второе поле) await cardNumberFields[1].type('2202206407759229'); } else { } await page.waitForTimeout(1000); // Заполнение полей формы await page.type('input[name="moneyAmount"]', '1000'); await page.waitForTimeout(3000); const submitButton = await page.$('button[type="submit"]'); if (submitButton) { await submitButton.click(); } // Подождать некоторое время на случай, если форма генерируется динамически await page.waitForSelector('form input[name="creq"]', { timeout: 20000 }); // Получение и вывод полного HTML-кода формы в консоль const formHTML = await page.evaluate(() => { const form = document.querySelector('form input[name="creq"]').closest('form'); return form ? form.outerHTML : null; }); if (formHTML) { console.log('Form HTML:', formHTML); } else { console.log('Form with creq not found'); } // Закрыть браузер await browser.close(); } catch (error) { console.error('An error occurred:', error); } })();
Дополнительно:
Судя по прежнему вашу вопросу - вам стоит посмотреть в сторону php webdriver.
Ответы:
1. Отрисовать html форму.
2. Сделать обработчик формы на php.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы переписать скрипт под выполнение у посетителя в браузере, необходимо использовать язык JavaScript. Вот пример того, как можно переписать скрипт на PHP для выполнения в браузере:
```html
Пример скрипта на PHP в браузере
// Ваш PHP скрипт, переписанный на JavaScript
var result = '';
for (var i = 1; i <= 10; i++) {
result += 'Число ' + i + '
';
}
document.getElementById('result').innerHTML = result;
```
В данном примере мы создали простой скрипт, который выводит числа от 1 до 10 в элемент с id "result" на странице. Вместо использования PHP цикла мы использовали цикл на JavaScript. Теперь этот скрипт может быть запущен в любом современном браузере без необходимости запуска на сервере.
Таким образом, чтобы переписать скрипт на PHP под выполнение в браузере, нужно переписать его на JavaScript и вставить его внутрь тега `` в HTML файле.