Стек который использую: php, yii, selenium
Пытаюсь получить доступ к
https://spotifycharts.com/
Мои действия, я получай frame капчи:
#cf-hcaptcha-container > iframe
и достаю от туда src. Далее извлекаю sitekey:
private static function extractHCaptchaCode($url)
{
preg_match('~sitekey=(?<sitekey>.+?)(&|$)~ui', $url, $result);
return !empty($result['sitekey']) ? $result['sitekey'] : false;
}
И отправляю на сервер рукапчи:
public static function solveHCaptcha($code, $url_with_captcha)
{
$params = [
'key' => Yii::$app->params['rucaptcha_api_key'],
'method' => 'hcaptcha',
'sitekey' => $code,
'pageurl' => $url_with_captcha,
'json' => 1,
];
$url = 'http://rucaptcha.com/in.php?' . http_build_query($params);
$client = new Client();
$response = $client->createRequest()
->setMethod('GET')
->setUrl($url)
->send();
if ($response->isOk && $response->data['status'] != 0)
{
$response_id = $response->data['request'];
return self::waitResult($response_id);
}
}
Ну и ждем собственно решения, как только приходит ответ, отправляем результат:
$this->selenium->executeScript("
document.querySelector('[name=h-captcha-response]').innerText = '$result_rucaptcha';
document.querySelector('#challenge-form').submit();
Проблема в том что когда я это писал все работало, капча проходилась. На следующий день просто передстало работать.
Подумал сразу что они определяют webdriver
и сделал так чтобы здесь было все зеленоё у селениума:
https://infosimples.github.io/detect-headless/
но это не помогло, капчу он так и не проходит, страница просто обновляется и все по новой... так до бесконечности, он не принимает результат и все.
Может кто сталкивался знает как пройти её ?