基于第三方平台的谷歌验证码识别
api价格
api Site: https://www.recaptcha.press
注:自己注册账号获得Token
运行dome.py测试
dome.py
# encoding: utf-8
"""
@author: _Jack Sparrow
@time: 2021/7/6 10:17
@file: domes.py
@desc:
@ api site : https://www.recaptcha.press
"""
import random
from yanzhma import tianyancha
import time
import requests
from selenium import webdriver
class ThroughReCAPTCHA():
def __init__(self ,token , browser, proxySocket=None):
self.browser = browser
self.proxySocket = proxySocket
self.token = token
def getIframe(self):
"""
iframe框架识别:锁定验证码iframe框架
:return:
"""
iframeList = []
iframeNodeAll = self.browser.find_elements_by_tag_name('iframe')
for iframe in iframeNodeAll:
if iframe.get_attribute("title") == "recaptcha challenge" or iframe.get_attribute("title") == "reCAPTCHA" or iframe.get_attribute("title") == "reCAPTCHA 验证":
iframeList.append(iframeNodeAll.index(iframe))
else:
if iframe.get_attribute("name") == "recaptcha":
iframeList.append(iframeNodeAll.index(iframe))
self.browser.switch_to.frame(iframeNodeAll.index(iframe))
iframeNodeAll = self.browser.find_elements_by_tag_name('iframe')
newIframeList = []
for iframe in iframeNodeAll:
if iframe.get_attribute("title") == "recaptcha challenge" or iframe.get_attribute("title") == "reCAPTCHA" or iframe.get_attribute("title") == "reCAPTCHA 验证":
newIframeList.append(iframeNodeAll.index(iframe))
self.browser.switch_to.default_content()
iframeList.append(newIframeList)
return iframeList
def getValidationIamgeLink(self, xPath=None):
"""获取验证码图片link"""
if xPath is None:
validationImageNode = self.browser.find_element_by_xpath('/html/body/div/div/div[2]/div[2]/div/table/tbody/tr[1]/td[1]/div/div[1]/img')
else:
validationImageNode = self.browser.find_element_by_xpath(xPath)
return validationImageNode.get_attribute("src")
def getValidationType(self):
"""
获取验证码类型
:return: 返回两种类型:33 and 44 ,33为3x3图形, 44为4x4图形
"""
validationImageNode = self.browser.find_element_by_xpath('/html/body/div/div/div[2]/div[2]/div/table/tbody/tr[1]/td[1]/div/div[1]/img')
return validationImageNode.get_attribute("class").replace("rc-image-tile-","")
def getValidationKeys(self):
"""获取验证目标名称"""
keys = self.browser.find_element_by_xpath("/html/body/div/div/div[2]/div[1]/div[1]/div/strong")
return keys.text
def updateValidationImage(self):
"""点击刷新更换验证码图片"""
self.browser.find_element_by_xpath("/html/body/div/div/div[3]/div[2]/div[1]/div[1]/div[1]/button").click()
time.sleep(1)
def checkValidation(self):
"""验证通过验证码"""
self.browser.find_element_by_xpath("/html/body/div/div/div[3]/div[2]/div[1]/div[2]/button").click()
#todo 检测是否已经通过验证码
time.sleep(3)
jsCode = """
var button = document.querySelector("#recaptcha-verify-button");
if(button.getAttribute("tabindex")=="0"){
return false
}else {
return true
}
"""
try:
checked = self.