CAPSOLVER
Блог
CAPTCHA и проблемы в AWS WAF | Как решить их при веб-скрепинге

CAPTCHA и проблемы в AWS WAF | Как решить их при веб-скрепинге

Logo of Capsolver

Nikolai Smirnov

Software Development Lead

20-Jun-2024

Как известно многим предприятиям и пользователям веб-сканеров, AWS WAF (Веб-аппликационный брандмауэр) - это мощное решение для безопасности, предназначенное для защиты веб-приложений от распространенных кибератак и уязвимостей. Одной из ключевых функций является использование CAPTCHA и вызовов для различения легитимных пользователей и потенциальных вредоносных ботов. Хотя это повышает безопасность, но также создает значительные препятствия и некоторые ненужные проблемы для веб-сканирования. В этой статье мы рассмотрим CAPTCHA и вызовы в AWS WAF и обсудим, как преодолеть эти препятствия для обеспечения гладкой работы веб-сканеров и корпоративной деятельности.

Понимание CAPTCHA и вызовов AWS WAF

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

Надоело постоянно не проходить надоедливые капчи?

Откройте для себя автоматическое решение капчи с использованием ИИ, предоставляемое Capsolver!

Используйте промокод для получения первоклассного решения капчи; CapSolver: WEBS. После использования промокода, вы получите дополнительный бонус 5% на каждый депозит, без ограничений.

  1. Соответствие по IP-адресу

Amazon WAF может использовать бесклассовую междоменную маршрутизацию (CIDR) для настройки до 10 000 диапазонов IP-адресов для каждого условия соответствия IP. Каждый список ограничен этим лимитом. Списки разрешений, списки отказов (вручную создаваемые компоненты списка IP-адресов) и списки блокировки IP от третьих сторон (компоненты разрешения списка IP) - это отдельные списки, каждый из которых ограничен 10 000 IP-адресами. Можно вручную изменить списки разрешений и отказов, добавляя или удаляя IP-адреса по мере необходимости.

  1. Внедрение ловушек в веб-приложение

Будет создана конечная точка, которую редко посещают, как ловушка для обнаружения и отвлечения контент-сканеров и вредоносных ботов. Обычные пользователи не будут пытаться получить доступ к этой конечной точке. Однако контент-сканеры и вредоносные боты (например, вредоносное ПО, сканирующее уязвимости и собирающее данные) могут попытаться получить доступ к ловушке. В этом случае Amazon проверит запрос, чтобы определить его источник, а затем обновит соответствующие правила Amazon WAF, чтобы заблокировать последующие запросы с этого IP-адреса.

Кроме того, AWS обычно использует три типа CAPTCHA:

  1. Вот пример капчи с сеткой изображений. В этой капче требуется выбрать все изображения, содержащие определенные объекты.

  2. Другой распространенный тип капчи показан ниже. В этом примере требуется определить конечную точку пути автомобиля на изображении.

  3. Последний тип - это аудио CAPTCHA, которая использует принцип наложения фонового шума на голос. Конечно, как и в случае с головоломками, если у вас есть правильный подход, аудио CAPTCHA также может быть автоматически решена.

Как распознать AWS WAF?

  1. Проверка заголовков ответа URL-запроса

При запросе URL, если код состояния ответа обычно 405 и заголовок ответа содержит поля X-Amzn-Waf-Action: captcha и X-Amzn-Errortype: ForbiddenException, это означает, что текущий доступ заблокирован AWS WAF.

  1. Появление в HTML ответе

Если HTML-ответ содержит такие строки, как awsWaf или captcha.awswaf.com, это означает, что требуется обработка AWS CAPTCHA.

<script type="text/javascript">
window.awsWafCookieDomainList = [];
window.gokuProps = {
    "key":"AQIDAHjcYu/*****",
    "iv":"CgAHfjMvRjAAAA3q",
    "context":"MK7Z1IlZc****"
};
</script>
<script src="https://***.token.awswaf.com/***/challenge.js"></script>
<script src="https://***.captcha.awswaf.com/****/captcha.js"></script>

Советы по обходу WAF

Мы можем использовать CapSolver для законного автоматического решения головоломок. CapSolver - это сервис, предоставляющий решения для распознавания CAPTCHA. Он предлагает различные типы задач для разных систем CAPTCHA, включая WAF.

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

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

Шаг 1. Вход

Вы можете зарегистрироваться на CapSolver и получить доступ к нашим CAPTCHA сервисам, которые в настоящее время доступны для бесплатного использования.

Шаг 2. Получите свой бесплатный API!

После регистрации вы сможете получить свой API ключ на главной панели управления.

Пример кода

Чтобы получить действительный aws-waf-token с помощью кода, вы можете использовать такие основные языки программирования, как Python, Go, JavaScript. Вот пример получения токена с помощью Python:

# pip install requests
import requests
import time

api_key = "YOUR_API_KEY"  # TODO: ваш API ключ от capsolver
site_url = "https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest"  # TODO: URL вашего сайта

def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'AntiAwsWafTaskProxyLess',
            "websiteURL": site_url
        }
    }
    res = requests.post("https://api.capsolver.com/createTask", json=payload)
    resp = res.json()
    task_id = resp.get("taskId")
    if not task_id:
        print("Failed to create task:", res.text)
        return
    print(f"Got taskId: {task_id} / Getting result...")

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

token = capsolver()
print(token)

Вскоре вы увидите, что вывод будет содержать необходимый aws-waf-token.

Got taskId: 373a6363-c03f-48d5-85eb-05e553980a64 / Getting result...
2d8415fb-43ec-42c5-8106-c51194d5eb14:EQoAljIa3jkRAAAA:Z+bkUZcJEl90QIM46acsmio......

Далее проверьте, действительно ли токен aws-waf-token работает.

def check_website(token):
    headers = {
        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
        "accept-language": "en-US,en;q=0.9,sq;q=0.8,ak;q=0.7,ar;q=0.6,an;q=0.

5,az;q=0.4,ab;q=0.3,fr-CA;q=0.2,fi;q=0.1,fr;q=0.1",
        "cookie": token,
    }
    res = requests.get(site_url, headers=headers)
    print(f"Got response {res.status_code}")
    print(f"Cookies: {res.cookies}")

check_website(token)

Заключение

Хотя CAPTCHA и вызовы AWS WAF могут эффективно предотвращать вредоносные действия, они также могут мешать легитимной активности веб-сканеров. Однако, поняв принцип работы AWS WAF и используя решения, такие как CapSolver, вы можете обойти эти препятствия и обеспечить плавную работу веб-сканирования. Помните, что важны как безопасность, так и соблюдение законов, поэтому, внедряя любые автоматизированные решения, следуйте соответствующим правовым и этическим нормам.

Ещеe

Scrapy против Selenium: Что лучше для вашего проекта веб-скрапинга
Scrapy против Selenium: Что лучше для вашего проекта веб-скрапинга

Откройте для себя сильные стороны и различия между Scrapy и Selenium для веб-скреппинга. Узнайте, какой инструмент лучше всего подходит для вашего проекта и как справиться с такими проблемами, как CAPTCHA.

The other captcha
Logo of Capsolver

Nikolai Smirnov

25-Jul-2024

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

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

The other captcha
Logo of Capsolver

Nikolai Smirnov

16-Jul-2024

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

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

The other captcha
Logo of Capsolver

Nikolai Smirnov

11-Jul-2024

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

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

The other captcha
Logo of Capsolver

Nikolai Smirnov

10-Jul-2024

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

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

The other captcha
Logo of Capsolver

Nikolai Smirnov

05-Jul-2024

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

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

The other captcha
Logo of Capsolver

Nikolai Smirnov

04-Jul-2024