【发布时间】:2022-11-11 16:21:49
【问题描述】:
我正在尝试自动访问具有 Geetest V3 验证码的网站。 我用 Selenium 编写了一个 python 脚本,它获取所需的“gt”和“challenge”令牌并将其发送给工作人员来解决它。 一旦我得到解决方案,它是一个结构如下的 JSON:
{
"challenge": "xxxxxxxxx",
"validate": "xxxxxxxxxxx",
"seccode": "xxxxxxxxxxxxx|jordan"
}
我不知道如何将这些参数发送到网页并到达实际主页。
值得一提的是,一旦页面加载了我在另一篇文章中找到的 2 行代码,我已经阻止了会使令牌过期的外部 URL:
driver.execute_cdp_cmd('Network.setBlockedURLs', {"urls": ["api.geetest.com/get.php"]})
driver.execute_cdp_cmd('Network.enable', {})
我发现这两行也阻止了 geetest HTML 表单的加载,所以我不能用“find_element”方法填充它,但似乎有必要阻止网站刷新“挑战”令牌。
from anticaptchaofficial.geetestproxyless import *
from selenium import webdriver
from selenium.webdriver.common.by import By
import telegram
import re
CLEANR = re.compile('<.*?>')
def cleanhtml(raw_html):
cleantext = re.sub(CLEANR, '', raw_html)
return cleantext
anticaptcha_api_key = "xxxxxxxxxxxxxxxx"
driver = webdriver.Chrome('/usr/lib/chromium-browser/chromedriver')
url = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
driver.execute_cdp_cmd('Network.setBlockedURLs', {"urls": ["api.geetest.com/get.php"]})
driver.execute_cdp_cmd('Network.enable', {})
page = driver.get(url)
html_key = driver.find_element(By.XPATH, "//script[contains(text(), 'gt:')]").get_attribute('outerHTML')
clean_key = cleanhtml(html_key)
print(clean_key)
clean_key = clean_key.split()
list_of_keys = []
for i in clean_key:
if len(i) == 35:
i = i.replace('"', "")
i = i.replace(',', "")
list_of_keys.append(i)
print(list_of_keys)
GT_KEY = list_of_keys[0]
CHALLENGE_KEY = list_of_keys[1]
print(CHALLENGE_KEY)
solver = geetestProxyless()
solver.set_verbose(1)
solver.set_key(anticaptcha_api_key)
solver.set_website_url(url)
solver.set_gt_key(GT_KEY)
solver.set_challenge_key(CHALLENGE_KEY)
g_response = solver.solve_and_return_solution()
if g_response != 0:
print("g_response", g_response)
else:
print("task finished with error" + solver.error_code)
challenge = g_response["challenge"]
validate = g_response["validate"]
seccode = g_response["seccode"]
print(challenge, validate, seccode)
# WHAT NOW? HOW TO PASS challenger, validate and seccode to the website?
【问题讨论】: