Selenium 使用 2captcha Python 提交 recaptcha
Selenium to submit recaptcha using 2captcha Python
我正在尝试使用 Python3、Selenium 和 2captcha 在搜索表单上提交 Recaptcha。
除了在 Recaptcha 的文本区域中发送 google-tokin 之后提交 Recaptcha 之外,一切正常。
请指导我我错过了什么?
当我查看我的 Selenium Webdriver window 时,它显示 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:])
回答这个问题,让遇到这种情况的人可以从这个答案中得到帮助。
我错过了在你获得 google 令牌后你需要显示 recaptcha text-area 并像这样将 google-token 发送到 text-area
显示 text-area 的验证码。
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:])
然后您需要将 text-area 显示为 none,以便可以点击 repcatcha 附近的搜索按钮。
driver.execute_script('var element=document.getElementById("g-recaptcha-response"); element.style.display="none";')
然后您需要点击搜索按钮来获取搜索结果。
我正在尝试使用 Python3、Selenium 和 2captcha 在搜索表单上提交 Recaptcha。 除了在 Recaptcha 的文本区域中发送 google-tokin 之后提交 Recaptcha 之外,一切正常。 请指导我我错过了什么? 当我查看我的 Selenium Webdriver window 时,它显示 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:])
回答这个问题,让遇到这种情况的人可以从这个答案中得到帮助。
我错过了在你获得 google 令牌后你需要显示 recaptcha text-area 并像这样将 google-token 发送到 text-area
显示 text-area 的验证码。
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:])
然后您需要将 text-area 显示为 none,以便可以点击 repcatcha 附近的搜索按钮。
driver.execute_script('var element=document.getElementById("g-recaptcha-response"); element.style.display="none";')
然后您需要点击搜索按钮来获取搜索结果。