Интеграция GeeTestTask(python3_antcaptcha) с селеном в python3

У меня проблема с python3_antcaptcha (API предоставлен anti-captcha.com), ищите в Интернете, найдите поддержку и пробуйте больше месяца, но безуспешно.

Документация по API: https://anticaptcha.atlassian.net/wiki/spaces/API/pages/416972814/GeeTestTaskProxyless+-+captcha+from+geetest.com+без+прокси

Я делаю автоматический вход на веб-сайт и копирую API в документ против капчи:

def runGee(self, challenge):
    print("start gee")
    try:

        # Enter the key to the AntiCaptcha service from your account. Anticaptcha service key.
        ANTICAPTCHA_KEY = "mycode"
        # обязательные параметры
        websiteURL = "https:\/\/www.nike.com.hk"
        gt = "2328764cdf162e8e60cc0b04383fef81"
        print("sloving1")
        print("challenge:" ,challenge)
        # пример работы с GeeTestTask без прокси
        result = GeeTestTaskProxyless.GeeTestTaskProxyless(anticaptcha_key=ANTICAPTCHA_KEY,
                                                           websiteURL=websiteURL,
                                                           gt=gt).captcha_handler(challenge=challenge)
        print("sloving2")
        print(result)
        print("--end gee--")
    except Exception as err:
        print(err)
        print("--end with error--")

Однако гитаск запускается более 3 минут (или более) и каждый раз выдает ошибку. обычно код ошибки, например:

{'errorId': 34, 'errorCode': 'ERROR_TOKEN_EXPIRED', 'errorDescription': 'Captcha provider 
reported that additional variable token has expired.', 'taskId': 1204556667}

or

{'errorId': 12, 'errorCode': 'ERROR_CAPTCHA_UNSOLVABLE', 'errorDescription': '  Captcha 
could not be solved by 5 different workers.', 'taskId': 1204060350}

..так далее

зависит от того, какой параметр я передал.

Могу ли я узнать, правильно ли я передаю значение для geetask? или что-то не так в коде? Более того, если geetest вернет правильное значение, мне нужно сделать что-то еще, чтобы пройти капчу (или передать код на сервер geetest) или GeeTestTaskProxyless уже сделано (ничего не делать)?

мне очень сложно, кто-нибудь успешно использовал этот API? Спасибо


person singwong    schedule 20.02.2020    source источник


Ответы (2)


Мне кажется, что эти ошибки связаны с прокси (если вы его используете) или просто с плохим IP. Лично я пользуюсь другим сервисом капчи и у меня с ним таких проблем не было. Советую попробовать, на самом деле это намного проще: https://2captcha.com/2captcha-api#solving_geetest

Вы должны отправить запрос, подобный этому:

https://2captcha.com/in.php?key=1abc234de56fab7c89012d34e56fa7b8&method=geetest>=f1ab2cdefa3456789012345b6c78d90e&challenge=12345678abc90123d45678ef90123a456b&api_server=api-na.geetest.com&pageurl=https://www.example.com/page/

Что вам нужно архивировать, так это получить от него правильный ответ, например этот:

{ "вызов": "1a2b3456cd67890e12345fab678901c2de", "проверить": "09fe8d7c6ba54f32e1dcb0a9fedc8765", "seccode": "12fe3d4c56789ba01f2e345d6789c012|Иордания" }

Тогда вам просто нужно реализовать этот ответ на сайте. Просто прочитайте первую ссылку, которую я вам дал.

Ваше здоровье.

person bobby91    schedule 21.02.2020
comment
Спасибо, возможно, я решу сменить провайдера. Но я не очень понимаю 5. Используйте значения, полученные от нашего API, чтобы отправить запрос на целевой веб-сайт, поместив значения в соответствующие поля запроса: Как я могу это сделать? - person singwong; 24.02.2020
comment
Ну, насколько я понимаю (я работаю с другими типами капчи, в основном с графической капчей и ReCaptcha), чтобы отправить ответ, который вам нужно было отправить POST-запросом на сайт, на котором вы работаете. Сначала вы должны открыть сетевой монитор в своем браузере, а затем решить капчу вручную. Вы увидите запрос, который идет на сервер и он должен содержать эти 3 параметра: geetest_challenge, geetest_validate, geetest_seccode Затем, когда в следующий раз будете решать капчу через 2captcha, вы просто отправляете тот же запрос на сайт, но вставляете его эти параметры из ответа 2captcha. - person bobby91; 26.02.2020

Проблема не в антикапче а в гетест провайдере. Претендент на токен можно использовать только один раз, когда ваш браузер загружает капчу geetest, срок действия токена истекает. Чтобы решить эту проблему, вам нужно всего лишь заблокировать запрос, использующий токен, в вашем браузере. зайдите в devtools и добавьте в браузер блок для geestest captcha API, вот так:

введите здесь описание изображения

Вы можете автоматически интегрировать это в селен с помощью следующей команды:

driver.execute_cdp_cmd('Network.setBlockedURLs', {"urls": ["api.geetest.com/get.php"]})
driver.execute_cdp_cmd('Network.enable', {})
person Thiago fernandes    schedule 19.06.2021