Блог
Как решить проблему Imperva Incapsula при веб-скреппинге в 2024 году | Полное руководство

Как решить проблему Imperva Incapsula при веб-скреппинге в 2024 году | Полное руководство

Logo of Capsolver

CapSolver Blogger

How to use capsolver

29-May-2024

Веб-скрапинг стал неотъемлемым инструментом для сбора данных из интернета, однако с развитием веб-безопасности решение защитных мер стало все сложнее. Одним из наиболее формидабельных препятствий является Imperva Incapsula, облачный сервис доставки приложений, включающий мощные средства защиты веб-приложений, защиту от DDoS-атак, CDN и балансировку нагрузки. В данном руководстве мы рассмотрим механизмы безопасности Imperva Incapsula и предложим практические решения для обхода этих мер в процессе веб-скрапинга в 2024 году.

Содержание

  1. Что такое Imperva Incapsula
  2. Как определить, защищен ли сайт Imperva
  3. Проблема обратной разработки
  4. Определение сетевого подключения
  5. Как решить проблемы с Imperva
  • Как Capsolver решает проблему
  1. Заключение

1. Что такое Imperva Incapsula?

1.1 Введение

Imperva Incapsula — это облачный сервис доставки приложений, включающий защиту веб-приложений, защиту от DDoS-атак, CDN и балансировку нагрузки. Он обеспечивает защиту от DDoS-атак на уровнях 3/4 и 7, защиту DNS и ускорение веб-сайтов. Сервис обнаруживает действия ботов, определяет их источники и характер. Он разрешает полезные боты (например, краулеры Google), блокируя вредоносные или нежелательные (используемые в кибератаках).

1.2 Методы и процессы верификации

  • Подпись проверки: Проверка параметров подписи.
  • Репутация IP/ASN: Обнаружение прокси и отпечатков сетевых запросов.
  • Поведенческие шаблоны: Мониторинг аномального трафика и частоты доступа.
  • Обнаружение инструментов/ботов: Использует куки, JavaScript и сторонние CAPTCHA (например, reCAPTCHA и GeeTest) для обнаружения ботов.
    Если вы сталкиваетесь с верификацией reCAPTCHA:
  • Процесс определения ограничения доступа:
    При доступе к защищенному Imperva веб-сайту проходят ряд процессов мониторинга и отслеживания. Если какой-либо этап кажется подозрительным, выполняется сочетание проверок. Конечная оценка определяет, предоставляется ли доступ.

2. Как определить, защищен ли сайт Imperva

2.1 Проверка запросов браузера

Обычно неудачная попытка доступа возвращает код состояния 4xx. После успешного доступа после верификации в куки включается параметр reese84.

3. Проблема обратной разработки

Основные параметры включают __utmvc и reese84.

3.1 Параметр __utmvc

  1. Связанный JS-файл выполняет и перестраивает строку в зашифрованный код.
  2. Выполнение кода проверяет различную информацию оборудования устройства:
  • Аппаратные значения устройства: Bluetooth, звук, экран и т. д.
  • Информация об ОС и браузере: Размер окна, версия ядра, версия и тип ОС и т. д.
  • Информация об отпечатке зашифровывается с использованием JavaScript.

3.2 Параметр reese84

  • Генерация токена reese84 включает большое количество динамических параметров.
  • reese84 включает десятки отпечатков, и их число постоянно обновляется.
  • Каждый отпечаток имеет динамические и зашифрованные ключи, что затрудняет определение собираемой информации об отпечатке. Функции расчета отпечатков также анонимны и динамичны, причем в настоящее время используется около 20 таких функций, и их количество растет.
  • Определение, соответствует ли собранная информация об отпечатке при доступе из различных сред (Chrome, Safari, и корреляция версии браузера)
  • Собранная информация об отпечатке зашифровывается и вычисляется, и процесс вычисления зашифрован, что делает его нечитаемым.

4. Обнаружение сетевого подключения

  1. Информация в заголовке запроса: язык и IP-адрес, версия браузера и параметры токена соответствия и т. д.
  2. Обнаружение IP-прокси: Проверяет, приходит ли запрос от ISP. Использование резидентных прокси и мобильных сетей обычно разрешено.
  3. Протокол доступа: Большинство браузеров сейчас используют HTTP2. Использование HTTP 1.1 может быть рассмотрено как подозрительное. Для запросов, выполненных с помощью Python или Go, используйте библиотеки, поддерживающие HTTP2.
  4. Обнаружение TLS: Помимо версии HTTP, проверяется клиент-серверное подключение. Запросы, выполненные с помощью Python или Go, имеют заметные различия в TLS по сравнению с доступом через браузер. Измените настройки TLS или используйте библиотеки, поддерживающие TLS. Проекты с открытым исходным кодом предлагают такую поддержку.

Capsolver обрабатывает эти сетевые обнаружения при генерации используемых кук/токенов, делая поведение более похожим на человеческое, чтобы избежать обнаружения бот-детекторов.

5. Как решить проблемы с Imperva

  1. Крайне качественные IP-прокси могут предоставить прямой доступ.
  2. Инструменты автоматизации браузера, такие как Puppeteer.
  3. Node.js моделирует среды браузера для выполнения JS-файлов и расчета параметров. Node.js может иметь проблемы с памятью, что делает его непригодным для масштабного использования.
  4. Использование CapSolver.

Как Capsolver решает проблему

CapSolver обрабатывает сложные процессы расчета параметров, среды сети (IP-прокси/TLS-отпечаток) и подлинность отпечатков устройства, делая его эффективнее методов автоматизации браузера/Node.js и подходящим для масштабного использования.

Просто укажите CapSolver URL и соответствующий reeseScriptUrl, и CapSolver вернет действующий токен для доступа к целевому веб-сайту.

Получение reeseScriptUrl

После неудачной попытки доступа обычно получается JS-файл с уникальным URL для каждого сайта. URL скрипта выглядит так:

  • https://www.xxx.com/Ifainesse-What-mine-Alasterd-the-How-I-haile-Lad
  • https://epsf.xxx.com/eps-d?d=www.xxx.com
  • https://www.xxx.de/epsf/eps-d
Использование Capsolver

Imperva Incapsula вычисляет более 180 зашифрованных значений на основе собранных отпечатков. Capsolver решает эти проблемы, вам просто нужно вызвать API для получения решения и вы можете непосредственно решить проблему, пример кода Python представлен ниже:

import requests
import time


api_key = "ВАШ_API_КЛЮЧ"
website_url = "https://example.com/"
reese_script_url = "https://xxx.xxx.xxx.xxx/"
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
proxy = 'http://127.0.0.1:7890'


def get_solution():
    data = {
        "clientKey": api_key,
        "task": {
            "type": 'AntiImpervaTaskProxyLess',
            "websiteURL": website_url,
            "userAgent": user_agent,
            "reeseScriptUrl": reese_script_url,
            "reese84": True,
        }
    }

    uri = 'https://api.capsolver.com/createTask'
    res = requests.post(uri, json=data)
    print(res.text)
    resp = res.json()
    task_id = resp.get('taskId')
    if not task_id:
        print("failed to get taskId:", res.text)
        return

    while True:
        time.sleep(1)
        data = {
            "clientKey": api_key,
            "taskId": task_id
        }
        res = requests.post('https://api.capsolver.com/getTaskResult', json=data)
        # print(res.text)
        resp = res.json()
        status = resp.get('status', '')
        print('get status:', status)
        if status == "ready":
            print("successfully => ", res.text)
            return resp.get('solution')
        if status == "failed" or resp.get("errorId"):
            print("failed! => ", res.text)
            return


def request_site(solution):
    headers = {
        'sec-ch-ua': '"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"',
        'Accept': 'application/json, text/plain, */*',
        'sec-ch-ua-mobile': '?0',
        'User-Agent': user_agent,
        'sec-ch-ua-platform': '"Windows"',
        'Sec-Fetch-Site': 'same-origin',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Dest': 'empty',
        'Accept-Encoding': 'gzip, deflate, br',
        'Accept-Language': 'en',
    }
    if solution.get('token'):
        headers['cookie'] = solution.get('token')
        headers['Accept-Language'] = solution.get('language')

    res = requests.post(
        website_url, headers=headers, proxies={"https": px}, timeout=(20, 20)
    )
    print(res.text)
    print("response status code:", res.status_code)


if __name__ == '__main__':
    solution = get_solution()
    if solution:
        request_site(solution)

Заключение

Навигация по мерам безопасности, введенным Imperva Incapsula, может быть довольно сложной, особенно с учетом его передовых техник обнаружения ботов и сложных механизмов отпечатков. Однако с правильными инструментами и пониманием можно эффективно преодолеть эти препятствия.

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

FAQ

Завершая эту статью, рассмотрим несколько часто задаваемых вопросов о веб-скрапинге страниц, защищенных Imperva:

Легально ли скрапить страницы, защищенные Imperva?

Да. Веб-скрапинг общедоступных данных юридически допустим по всему миру, при условии, что процесс скрапинга не наносит вред сайту.

Можно ли использовать кэш-сервисы для решения проблем с Imperva?

Да, общедоступные кэширующие сервисы, такие как Google Cache или Archive.org, иногда можно использовать для обхода защиты Imperva, поскольку эти сервисы часто включены в белый список. Однако не все страницы кэшируются, а те, что кэшируются, могут быть устаревшими, что делает их менее подходящими для веб-скрапинга. Кэшированные страницы также могут лишаться динамически загружаемого контента.

Возможно ли полностью решить проблему с Imperva и скрапить сайт напрямую?

Хотя технически возможно обойти защиту Imperva, это может быть незаконным в некоторых юрисдикциях и в общем случае не рекомендуется из-за сложности и потенциальных юридических проблем, связанных с этим.

Ещеe

API против парсинга
API против парсинга: лучший способ получения данных

Разберитесь в различиях, плюсах и минусах веб-скрапинга и API-скрапинга, чтобы выбрать лучший метод сбора данных. Изучите CapSolver для решения задач, связанных с ботами.

The other captcha

16-Jul-2024

Использование Selenium и C# для автоматизации вызовов CAPTCHA
Использование Selenium и C# для автоматизации вызовов CAPTCHA

В конце этого урока вы будете иметь полное представление о том, как решить CAPTCHA с помощью Selenium C#.

The other captcha

11-Jul-2024

Что такое Puppeteer
Что такое Puppeteer и как его использовать для веб-скрапинга | Полное руководство 2024

Это полное руководство расскажет о том, что такое Puppeteer и как эффективно использовать его для веб-скрапинга

The other captcha

10-Jul-2024

Что такое веб-скрейпинг
Что такое веб-скрейпинг | Распространенные случаи использования и проблемы

Познакомьтесь с веб-скреппингом: узнайте о его преимуществах, легко справляйтесь с проблемами и развивайте свой бизнес с помощью CapSolver.

The other captcha

05-Jul-2024

CapSolver Dashboard 3.0!
Повышайте уровень с CapSolver Dashboard 3.0!

CapSolver Dashboard 3.0 обновлён с улучшенным взаимодействием и множеством новых функций.

The other captcha

04-Jul-2024

Решение проблемы captcha в selenium python
Как решить CAPTCHA в Selenium на Python | Полное руководство 2024

Легко решайте проблемы с CAPTCHA в Selenium Python с помощью нашего подробного руководства. Узнайте, как использовать инструменты CapSolver для выполнения автоматизации.

The other captcha

04-Jul-2024