Selenium для отправки recaptcha с использованием 2captcha Python

Я пытаюсь отправить Recaptcha в форму поиска, используя Python3, Selenium и 2captcha. Все работает нормально, за исключением отправки Recaptcha после отправки google-tokin в текстовой области Recaptcha. Пожалуйста, помогите мне, что мне не хватает? Когда я смотрю в свое окно Selenium Webdriver, оно показывает текстовую область Recaptcha, заполненную google-tokin, но я не могу отправить ее, чтобы продолжить поиск результатов. Спасибо.

from selenium import webdriver
from time import sleep
from datetime import datetime
from twocaptcha import TwoCaptcha
import requests

## Launching webdriver
driverop = webdriver.ChromeOptions()
driverop.add_argument("--start-maximized")
driver = webdriver.Chrome("chromedriver/chromedriver",options=driverop)
url = "https://app.skipgenie.com/Account/Login"
sleep(randint(5,10))
email = "..."
password = ".."

input_data = pd.read_excel("input_data.xlsx")
user_Data = []
driver.get(url)
driver.find_element_by_id("Email").send_keys(email)
driver.find_element_by_id("Password").send_keys(password)
driver.find_element_by_class_name("btn-lg").click()

driver.find_element_by_id("firstName").send_keys(input_data.iloc[0][0])
driver.find_element_by_id("lastName").send_keys(input_data.iloc[0][1])
driver.find_element_by_id("street").send_keys(input_data.iloc[0][2])
driver.find_element_by_id("city").send_keys(input_data.iloc[0][3])
driver.find_element_by_id("state").send_keys(input_data.iloc[0][4])
driver.find_element_by_id("zip").send_keys(int(input_data.iloc[0][5]))

# 2Captcha service
service_key = 'ec.....' # 2captcha service key 
google_site_key = '6LcxZtQZAAAAAA7gY9-aUIEkFTnRdPRob0Dl1k8a' 
pageurl = 'https://app.skipgenie.com/Search/Search' 
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):  
    sleep(5) # wait 5 sec.
    resp = requests.get(fetch_url)
    if resp.text[0:2] == 'OK':
        break 

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

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

person Ashfaque Marfani    schedule 21.10.2020    source источник


Ответы (1)


Ответ на вопрос, чтобы люди, столкнувшиеся с подобными ситуациями, могли получить помощь из этого ответа.

Мне не хватало того, что после того, как вы получите токен google, вам нужно отобразить текстовую область recaptcha и отправить токен google в текстовую область, как это

Для отображения текстовой области рекапчи.

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

после этого отправьте токен Google следующим образом:

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

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

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

затем вам нужно нажать на кнопку поиска, чтобы получить результат поиска.

person Ashfaque Marfani    schedule 22.10.2020