Нет функции обратного вызова и кнопки отправки 2Captcha и Selenium

Я пытаюсь научиться писать программы с использованием python и сочетания селена с API 2captcha. Работа над кодом из другой темы, который явно работает. Мне удалось это немного узнать. ниже код, который я изучаю

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
import requests


GChrome=webdriver.Firefox(executable_path="C:\driverswebs\geckodriver-v0.26.0-win64\geckodriver.exe")
GChrome.get('https://www.mercadobitcoin.com.br/conta/login/')

box_login = GChrome.find_element_by_name('cpfcnpj')
box_login.send_keys('my_cpf')
box_pass = GChrome.find_element_by_name('password')
box_pass.send_keys('my_pass')

box_pass.send_keys(Keys.ENTER)


# 2Captcha service
service_key = '7dccd1' # 2captcha service key
google_site_key = '6LfIxCoUAAAAAEEW7DQK_gj3pzzeJz82dTW_SMNH'
pageurl = 'https://www.mercadobitcoin.com.br/conta/login/'
url = "http://2captcha.com/in.php?key=" + service_key + "&method=userrecaptcha&googlekey=" + google_site_key + "&pageurl=" + pageurl
resp = requests.get(url)

if resp.text[0:2] != 'OK':
    quit('Service error. Error code:' + resp.text)
captcha_id = resp.text[3:]

fetch_url = "http://2captcha.com/res.php?key="+ service_key + "&action=get&id=" + captcha_id

for i in range(1, 10):
    time.sleep(5) # wait 5 sec.
    resp = requests.get(fetch_url)
    if resp.text[0:2] == 'OK':
        break

GChrome.execute_script('var element=document.getElementById("g-recaptcha-response"); element.style.display="";')

GChrome.execute_script("""
  document.getElementById("g-recaptcha-response").innerHTML = arguments[0]
""", resp.text[3:])

GChrome.execute_script("""
  onSubmit(arguments[0])
""", resp.text[3:])

приведенный выше код работает, но если у нас есть кнопка onSubbmit, которая имеет функции обратного вызова, что, если у нас их нет? Согласно API 2Captcha, когда кнопки нет, найдите в коде параметр ___grecaptcha_cfg.clients[0] .aa.l.callback и обратитесь к нему.

Только в моем случае нет параметра Callback и как в этом случае отправить полученный токен? под кодом fragmet ___grecaptcha_cfg.clients[0]

Буду благодарен за любую помощь:)

1 ответ

В любом случае должна быть функция обратного вызова. Вам необходимо отслеживать запросы в браузере после ручного решения капчи, а затем выполнять их в своей программе. Более подробную информацию о том, как найти и выполнить функцию обратного вызова, вы можете найти здесь: https://2captcha.com/2captcha-apihttps://captchaforum.com/threads/problem-with-invisible-recaptcha-v2-callback-function-at-mail-com-sign-up-page.56/ Убедитесь, что вы проверили все ответвления элементов и все запросы.

Другие вопросы по тегам