Как мне сделать так, чтобы scrapfly был аутентифицирован и мог получить доступ к защищённым маршрутам на веб-сайте?

Вопрос или проблема

Я пытаюсь получить номера телефонов из объявлений на leboncoin.fr с помощью веб-скрапера, но мне нужно быть авторизованным, чтобы это сделать. Есть кнопка, которая позволяет нажать на нее, чтобы открыть номер. Когда вы нажимаете на кнопку и вы авторизованы, номер телефона извлекается с сервера и отображается, в противном случае вас перенаправляют на страницу входа. Моя задача – как сделать так, чтобы бот был авторизован. Код работает идеально и получает HTML-содержимое, но поскольку я не авторизован, нажатие не показывает номер. Вы можете ознакомиться со страницей здесь https://www.leboncoin.fr/ad/voitures/2858300144

 const scrapfly = new ScrapflyClient({
    key: "MY-API-KEY",
  });
  const result = await scrapfly.scrape(
    new ScrapeConfig({
      url: "https://www.leboncoin.fr/ad/voitures/2858300144",
      asp: true, // включить обхождение блокировок скрапера

      render_js: true,
      js_scenario: [
        {
          click: {
            selector:
              "document.querySelector('button[title=\\'voir le numéro\\']').click()",
          },
        },
      ],
    })
  );
  // получить данные результата скрапа
  console.log(result.result.content);
  await writeFile("./hello.html", result.result.content);
  // и даже обрабатывать его с помощью CSS-селекторов:
  await writeFile("./main.json", JSON.stringify(result.result));

Я пробовал добавлять заголовки из моего авторизованного браузера, но теперь скрапер блокируется системой защиты от ботов на leboncoon.fr


const scrapfly = new ScrapflyClient({
    key: "MY-API-KEY",
  });
  const result = await scrapfly.scrape(
    new ScrapeConfig({
      url: "https://www.leboncoin.fr/ad/voitures/2858300144",
      asp: true, // включить обхождение блокировок скрапера
      headers: {
        authority: "api.leboncoin.fr",
        path: "/api/call-tracking/v1/classified/2858300144/phone?referrerId=bc164284-9789-41f6-90bb-3c70c9b7beef&referrerType=alu",
        scheme: "https",
        accept: "*/*",
        "accept-encoding": "gzip, deflate, br, zstd",
        "accept-language": "en-US,en;q=0.9",
        authorization: "Bearer jwt",
        "content-type": "aplication/json",
        cookie:"cpokie value",
        origin: "https://www.leboncoin.fr",
        riority: "(u = 1), i,",
        referer: "https://www.leboncoin.fr/ad/voitures/2858300144",
        "sec-fetch-dest": "empty",
        "sec-fetch-mode": "cors",
        "sec-fetch-site": "same-site",
        "user-agent":
          "Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.188 Safari/537.36 CrKey/1.54.250320",
      },
      render_js: true,
      js_scenario: [
        {
          click: {
            selector:
              "document.querySelector('button[title=\\'voir le numéro\\']').click()",
          },
        },
      ],
    })
  );

Ответ или решение

Для успешного выполнения задачи по аутентификации при использовании Scrapfly для доступа к защищенным маршрутам на сайте leboncoin.fr, необходимо учесть несколько ключевых моментов, касающихся процесса аутентификации и взаимодействия с веб-страницами. Давайте разберем пошагово, как это сделать.

Шаг 1: Аутентификация

Перед тем как выполнять запросы к защищенным страницам сайта, вам необходимо пройти процедуру аутентификации. Это может быть реализовано через API сайта, если он предоставляет такой функционал, или через автоматическое заполнение форм.

  1. Получение токена аутентификации: Проверьте, есть ли возможность получить токен (например, JWT). Это делается часто путем отправки POST-запроса на конечную точку аутентификации с вашими учетными данными.

    const response = await fetch('https://www.leboncoin.fr/api/auth', {
       method: 'POST',
       headers: {
           'Content-Type': 'application/json',
       },
       body: JSON.stringify({ username: 'ваш_логин', password: 'ваш_пароль' }),
    });
    const data = await response.json();
    const token = data.token; // Предполагаем, что токен приходит в этом поле
  2. Сохранение значения cookie: Многие веб-сайты используют cookies для управления сессией. Убедитесь, что вы сохранили и отправили необходимые cookies наряду с токеном.

Шаг 2: Использование Scrapfly для доступа к защищенным страницам

Теперь, когда у вас есть токен, вам нужно использовать его в запросах, отправляемых Scrapfly. Код может выглядеть примерно так:

const scrapfly = new ScrapflyClient({
    key: "MY-API-KEY",
});
const result = await scrapfly.scrape(
    new ScrapeConfig({
        url: "https://www.leboncoin.fr/ad/voitures/2858300144",
        asp: true, // включение обхода блокировок скраперов
        headers: {
            "Authorization": `Bearer ${token}`, // Добавление токена аутентификации
            "Cookie": "ваша_cookie_значение",
            // Другие заголовки (если нужно)
        },
        render_js: true,
        js_scenario: [
            {
                click: {
                    selector: "document.querySelector('button[title=\\'voir le numéro\\']').click()",
                },
            },
        ],
    })
);

Шаг 3: Обработка результата

После выполнения запроса вы сможете получить желаемые данные из результата:

console.log(result.result.content);
await writeFile("./hello.html", result.result.content);
await writeFile("./main.json", JSON.stringify(result.result));

Шаг 4: Обход антибот-систем

Если вы сталкиваетесь с блокировками со стороны антибот-системы, рассмотрите следующие рекомендации:

  1. Изменение User-Agent: Попробуйте использовать различные User-Agent строки для имитации различных браузеров и устройств.
  2. Рандомизация заголовков: Модифицируйте заголовки, которые отправляются на сервер, чтобы предотвратить баннеры.
  3. Покупка прозорливыхТОКЕНОВ: Используйте методы ротации IP или прокси для маскировки исходного IP адреса.

Заключение

Эффективная аутентификация при работе с веб-скрапингом требует внимательного подхода к деталям и понимания внутренней архитектуры целевого веб-сайта. Следуя вышеуказанным шагам, вы сможете не только получить доступ к необходимой информации, но и обеспечить высокую степень анонимности при выполнении запросов.

Оцените материал
Добавить комментарий

Капча загружается...