Логотип «2Captcha»Перейти на главную страницу
Туториалы по обходу капчи

Эта статья была полезной?

Как обойти POW Captcha на сайте Filecrypt

Грегори Фишер
Грегори Фишер

Технический специалист

Сайт Filecrypt (filecrypt.cc) использует специфическую Proof-of-Work (POW) капчу для защиты процессов скачивания и расшифровки контейнеров. Главная особенность этой капчи заключается в том, что для её решения недостаточно передать только URL страницы.

Система требует передачи уникальной ссылки на JSON-файл сессии (data_session), который генерируется динамически при каждом появлении капчи. В этом руководстве мы разберем, как перехватить этот параметр, отправить задачу через API и получить токен для обхода защиты.

Примечание: На данный момент официальная текстовая документация по этому конкретному методу отсутствует. Данное руководство составлено на основе рабочего примера кода и анализа сетевого трафика сайта.

Параметры задачи (API v1)

Для отправки задачи используется классический метод in.php.

Параметр Тип Обязательный Описание
key String Да Ваш API-ключ
method String Да Должен быть установлен в pow_captcha
pageurl String Да Полный URL страницы, где находится капча
data_session String Да Уникальная ссылка на JSON-файл сессии капчи (например, https://filecrypt.cc/captchasession/XXXX.json)
useragent String Да User-Agent браузера. Должен точно совпадать с тем, который используется в запросе
proxy String Нет Прокси в формате LOGIN:PASS@IP:PORT (если требуется)
proxytype String Нет Тип прокси (HTTP, HTTPS, SOCKS4, SOCKS5)
json Integer Нет Установите 1, чтобы получить ответ в формате JSON

Как найти параметры

Параметр data_session является динамическим и меняется при каждой новой попытке скачивания. Его необходимо перехватывать из сетевого трафика.

  1. Откройте страницу контейнера или скачивания на https://filecrypt.cc в браузере.
  2. Нажмите F12, чтобы открыть Инструменты разработчика (DevTools), и перейдите на вкладку Сеть (Network).
  3. Включите сохранение логов (Preserve log).
  4. Нажмите кнопку, которая инициирует проверку (например, "Download", "Decrypt" или "Show Download Links").
  5. В фильтре вкладки Сеть введите captchasession или .json.
  6. Вы увидите запрос к файлу, похожему на https://filecrypt.cc/captchasession/DFE4FE0B68.json.
  7. Скопируйте полный URL этого запроса. Это и есть значение для параметра data_session.
  8. Скопируйте основной URL страницы из адресной строки (это pageurl) и ваш текущий User-Agent из заголовков любого запроса.

Примеры кода

Python + requests

Исправленный и оптимизированный пример отправки задачи и опроса результата на основе предоставленного кода.

python Copy
import os
import requests
import time

# Рекомендуется хранить ключ в переменных окружения
my_key = os.environ.get("APIKEY", "ВАШ_API_КЛЮЧ_ПО_УМОЛЧАНИЮ")

API_URL = "https://api.2captcha.com/in.php"
API_RES_URL = "https://api.2captcha.com/res.php"

# Прокси указывается, только если сайт требует его использования
# proxy_target = "LOGIN:PASS@IP:PORT" 

data = {
    "method": "pow_captcha",
    "key": my_key,
    # "proxy": proxy_target,
    # "proxytype": "HTTP",
    "pageurl": "https://filecrypt.cc/Container/8CF37462DC.html",
    "useragent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
    "data_session": "https://filecrypt.cc/captchasession/DFE4FE0B68.json",
    "json": 1
}

# Важно: для метода in.php с json=1 лучше передавать данные как form-data, 
# но если API принимает JSON, можно использовать json=data. 
# Стандартный способ 2captcha - это form-data (data=data).
response = requests.post(API_URL, data=data)
result = response.json()

print("Response:", result)

if result.get("status") == 1:
    captcha_id = result['request']
    print(f"Задача создана, ID: {captcha_id}")
    
    # Небольшая задержка перед первым опросом
    time.sleep(15)
    
    for i in range(10):
        time.sleep(2)
        check_data = {
            "id": captcha_id,
            "key": my_key,
            "action": "get",
            "json": 1
        }
        check_response = requests.get(API_RES_URL, params=check_data)
        check_result = check_response.json()
        
        print(f"Attempt {i + 1}: {check_result}")
        
        if check_result.get("status") == 1:
            print(f"Капча решена! Токен: {check_result['request']}")
            break
        elif "CAPCHA_NOT_READY" in str(check_result):
            continue
        else:
            print("Ошибка при получении результата.")
            break
else:
    print(f"Ошибка создания задачи: {result.get('request')}")

Python + Playwright (Автоматический перехват)

Этот скрипт автоматически находит ссылку на data_session при нажатии кнопки, отправляет задачу и получает токен.

python Copy
from playwright.sync_api import sync_playwright
import requests
import time
import os

API_KEY = os.environ.get("APIKEY", "ВАШ_API_КЛЮЧ")
TARGET_URL = "https://filecrypt.cc/Container/8CF37462DC.html"

def solve_filecrypt_pow():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False)
        page = browser.new_page()
        
        session_url = None

        # Перехватываем ответы сервера, чтобы найти JSON сессии
        def handle_response(response):
            nonlocal session_url
            if "captchasession" in response.url and response.url.endswith(".json"):
                session_url = response.url

        page.on("response", handle_response)
        
        try:
            page.goto(TARGET_URL)
            
            # Здесь должно быть действие, вызывающее капчу
            # Например, клик по кнопке скачивания. Селектор нужно актуализировать.
            # page.click("button:has-text('Download')")
            
            # Ждем появления URL сессии или таймаута
            for _ in range(20):
                if session_url:
                    break
                time.sleep(1)
                
            if not session_url:
                raise Exception("Не удалось перехватить data_session. Проверьте действия на странице.")
            
            print(f"Перехвачен data_session: {session_url}")
            
            # Формируем запрос к API
            api_url = "https://api.2captcha.com/in.php"
            payload = {
                "method": "pow_captcha",
                "key": API_KEY,
                "pageurl": page.url,
                "useragent": page.evaluate("navigator.userAgent"),
                "data_session": session_url,
                "json": 1
            }
            
            # Отправка задачи
            response = requests.post(api_url, data=payload).json()
            if response.get("status") != 1:
                raise Exception(f"Ошибка создания задачи: {response.get('request')}")
                
            captcha_id = response['request']
            print(f"Задача создана, ID: {captcha_id}")
            
            # Ожидание решения
            res_url = "https://api.2captcha.com/res.php"
            token = None
            for _ in range(15):
                time.sleep(3)
                check_params = {"id": captcha_id, "key": API_KEY, "action": "get", "json": 1}
                res = requests.get(res_url, params=check_params).json()
                
                if res.get("status") == 1:
                    token = res['request']
                    break
                if "CAPCHA_NOT_READY" not in str(res):
                    print(f"Ошибка: {res}")
                    break
                    
            if token:
                print(f"Токен получен: {token}")
                # Примечание: Точный механизм применения токена зависит от внутренней логики Filecrypt.
                # Обычно его необходимо передать в заголовках или теле последующего запроса на скачивание,
                # либо выполнить определенный JS-коллбэк на странице.
            else:
                print("Не удалось получить токен.")
                
        except Exception as e:
            print(f"Ошибка: {e}")
        finally:
            # browser.close()

if __name__ == '__main__':
    solve_filecrypt_pow()

Как использовать полученный токен

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

  1. Он должен быть добавлен в качестве параметра или заголовка к следующему HTTP-запросу на скачивание/расшифровку, который вы отправляете после решения капчи.
  2. В некоторых случаях сайт ожидает выполнения определенной JavaScript-функции с этим токеном для разблокировки интерфейса. Рекомендуется проанализировать сетевой трафик (вкладку Network) при ручном успешном скачивании, чтобы увидеть, куда именно уходит этот токен.

Частые ошибки и решения

Ошибка / Проблема Причина Решение
ERROR_WRONG_USER_KEY Неверный или пустой API-ключ. Проверьте переменную окружения APIKEY или укажите ключ напрямую.
ERROR_BAD_PARAMETERS Отсутствует обязательный параметр или есть опечатки. Убедитесь, что в словаре data нет лишних пробелов в ключах (например, "method " вместо "method").
Ошибка получения сессии Ссылка data_session устарела или неверна. Перехватывайте ссылку на .json файл заново при каждой новой попытке скачивания.
CAPCHA_NOT_READY (вечно) Сессия капчи истекла до того, как она была решена. Увеличьте скорость между появлением капчи и отправкой запроса к API.

Полезные ссылки