Задать вопрос
@rinaz22

Как отправить POST запрос в playwright nodeJS?

Всем привет! Нужно спарсить данные с сайта. Раньше обходился средствами PHP, но с некоторых времен ввели проверку на запросы (в том числе на включен ли JS в браузере). Для обхода решил воспользоваться nodeJS и playwright.
Проверку пройти удалось, но вот пока не могу научиться ещё к запросу прикрепить данные методом POST, а также некоторые headers.
Сейчас код выглядит так:
import { webkit, expect } from 'playwright/test';

(async () => {
  const browser = await webkit.launch();
  const context = await browser.newContext();
  const page = await context.newPage();
  await page.goto('https://site.ru/test');

  await expect(page.getByText('the test word')).toHaveCount(1);

  await page.screenshot({ path: 'screenshot.png' });

  await browser.close();
})();


Надо в этот же запрос прикрепить данные методом POST. А именно u_id: 123 и headers:
- Content-Type: application/json
- x-token: 12345

Как это можно сделать? В документации читал про метод post, но к сожалению защита сайта не пускает дальше.
  • Вопрос задан
  • 66 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
@ddgryaz
Судя по вашему вопросу, как я понял, вам необходимо отправить POST-запрос уже находясь на странице после навигации. Для этого вам нужно воспользоваться методом evaluate() Документация.
Метод позволит вам выполнять JS-код в контексте браузера поднятым playwright'ом.
Далее вам просто нужно сделать fetch или XHR на необходимый эндпоинт с необходимыми для вас заголовками.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Kuzmin_Vyacheslav
@Kuzmin_Vyacheslav
Веб-мастер, на пути к искусственному интеллекту.
Проблема в том, что page.goto() — это навигация, она имитирует ввод адреса в браузере и всегда работает через GET-запрос.
Ты же пытаешься отправить POST-данные на этапе загрузки страницы, что для любого сайта выглядит как очень подозрительное, нестандартное действие. Именно поэтому защита тебя и блокирует.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы