Решите капчу с Python - PullRequest
       30

Решите капчу с Python

0 голосов
/ 08 июня 2019

Я использую службу Anti-Captcha, чтобы попытаться обойти ReCAPTCHA от Google.

Результат этого кода:

{'errorId': 0, 'status': 'ready', 'solution': {'gRecaptchaResponse': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}, 'cost': '0.00...', 'ip': '127.0.0.1', 'createTime': 9999999999, 'endTime': 9999999999, 'solveCount': 0, 'taskId': 11111111}

С помощью клавиши gRecaptchaResponse я могу как-тообойти капчу, это то, что я понял из Документов API.

Я пробовал Сетевой анализ на https://www.google.com/recaptcha/api2/demo, но у меня нет GET-Request-Method с атрибутом gRecaptchaResponse.Поэтому я понятия не имею, как заставить это работать, потому что я не знаю, где и как именно я могу использовать ключ gRecaptchaResponse, полученный от службы Captcha ByPass.

Но некоторые не по теме: как этоВозможно ли, что это может работать?Я имею в виду, что Google обычно выдает каждый раз (F5), что вы пытаетесь использовать Captcha новый токен Captcha, который идентифицирует вас.Поэтому для меня было бы логично отнести один токен к одному ключу gRecaptchaResponse.Поэтому, если кто-то другой найдет решение для вас, он может дать вам свой gRecaptchaResponse ключ результата, но как это возможно, что этот ключ работает для каждого токена?

Спасибо уже и наилучшими пожеланиями!

def solveCaptcha():
    ANTICAPTCHA_KEY = "11133331111333777"
    result = NoCaptchaTaskProxyless.NoCaptchaTaskProxyless(
        anticaptcha_key=ANTICAPTCHA_KEY
    ).captcha_handler(
        websiteURL="https://www.google.com/recaptcha/api2/demo",
        websiteKey="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    )
    print(result)
solveCaptcha()

1 Ответ

0 голосов
/ 16 июня 2019

Полагаю, вы используете веб-драйв с Python (Selenium или аналогичный).Вы должны получить ANTICAPTCHA_KEY из своего аккаунта Anti-Captcha.Он дает доступ API к вашему кредиту Anti-Captcha.

Я рекомендую вам добавить свой ANTICAPTCHA_KEY в вашу среду.Выполните следующую команду в оболочке или добавьте строку в файл bash (.bashrc или аналогичный)

export ANTICAPTCHA_KEY="your_key"

Ваш код может выглядеть следующим образом:

import os 
from python3_anticaptcha import NoCaptchaTaskProxyless
from selenium import webdriver

ANTICAPTCHA_KEY = os.environ["ANTICAPTCHA_KEY"]

def solveCaptcha():
    result = NoCaptchaTaskProxyless.NoCaptchaTaskProxyless(
        anticaptcha_key=ANTICAPTCHA_KEY
    ).captcha_handler(
        websiteURL="https://www.google.com/recaptcha/api2/demo",
        websiteKey="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    )
    return result.get("solution").get("gRecaptchaResponse")

Сначала установите webdriver,откройте страницу и выполните функцию, чтобы назначить ответ переменной.

driver = webdriver.Firefox()
driver.get("https://www.google.com/recaptcha/api2/demo")
captcha_response = solveCaptcha()

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

driver.execute_script(
    "arguments[0].style.display='inline'",
    driver.find_element_by_xpath(
        '//*[@id="g-recaptcha-response"]'
    ),
)

Затем выполните скрипт, чтобы вставить ответ в текстовое поле:

driver.execute_script(
'document.getElementById("g-recaptcha-response").innerHTML = "%s"'
            % captcha_response
)

После этого нажмите кнопку отправки, и вы увидите свой успех.

...