@issssrt

Как пройти авторизацию с recaptcha 2 (RUCAPTCHA)?

Использую сервис rucaptcha для обхода авторизации.
Вот мой код:
<?php
//echo $_SERVER['HTTP_USER_AGENT']; exit;
require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';

use jumper423\decaptcha\services\RuCaptchaReCaptcha;

$captcha = new RuCaptchaReCaptcha([
    RuCaptchaReCaptcha::ACTION_FIELD_KEY => 'xxx',
]);

if ($captcha->recognize([
    RuCaptchaReCaptcha::ACTION_FIELD_GOOGLEKEY => '6LeZhwoTAAAAAP51ukBEOocjtdKGRDei9wFxFSqs',
    RuCaptchaReCaptcha::ACTION_FIELD_PAGEURL   => 'https://fl.ru/login',
])) {
   echo $code = $captcha->getCode();
    $ch   = curl_init(); // инициализация CURL
    // Ввод пароля и идентификация
    curl_setopt($ch, CURLOPT_URL, "https://site/login/"); //адрес страницы лога

    
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // отключение сертификата
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // отключение сертификата

// отправка логина и пароля
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "login=testuser&passwd=zwd343rdgdf&singin=Войти&u_token_key=42921721c1674026259ef32ea76d7643&g-recaptcha-response=".$code);
//----------------------------------------------

//сохранение кукизов
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
    curl_setopt($ch, CURLOPT_HEADER, true);

    if ($ref != '') {
        curl_setopt($ch, CURLOPT_REFERER, $ref);
    }

    if ($cookie != '') {
        curl_setopt($ch, CURLOPT_COOKIE, $cookie);
    }

// прописывание броузера
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/64.0.3282.119 Chrome/64.0.3282.119 Safari/537.36');
//--------------------------------------------------------------
    curl_setopt($ch, CURLOPT_TIMEOUT, 50);
//----------------------------------------------------------------

// сдесь сохранение страницы которая загрузилась бы с URL
    $fp = fopen("proba.htm", "w"); // имя сохраняемого файла
    curl_setopt($ch, CURLOPT_FILE, $fp);
    curl_setopt($ch, CURLOPT_HEADER, 0);
// закрытие файла
    fclose($fp);

// выполнение запроса библиотеки CURL
    $content = curl_exec($ch);
//-------------------------------------------------------

///print_r(curl_getinfo($ch)); // вывод структуры запроса

// вывод ошибок при выполнении запроса
    if (curl_error($ch)) {
        echo "\n\ncURL error:" . curl_error($ch);
        echo "\n\ncURL error:" . curl_errno($ch);
//$flagerrcurl = true;
    }
//----------------------------------------------------------------
    // закрытие сессии запроса
    curl_close($ch);
//----------------------------------------------------------------

}


Проблема в том что если вывести результат запроса чтобы проверить авторизировался или нет, то там где стоит рекаптча пишет вот что - ОШИБКА: неверный домен ключа
Но если код, который возвращает рукаптча вставить в браузере в поле g-recaptcha-response то авторизация проходит на ура. Может быть как-то нужно более правильно настроить курл чтобы имитировать пользователя?
  • Вопрос задан
  • 1001 просмотр
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
разумеется

1 в 1 должен с браузером совпадать
Ответ написан
@vaajnur
битриксоид
гугл рекапча авторизует по паре sessid — g-recaptcha-response. Попробуй в CURLOPT_POSTFIELDS добавить sessid
Ответ написан
Ваш ответ на вопрос

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

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