使用PyPasser生成reCaptchaV3令牌仍遭遇401未授权认证错误
尝试用Python的requests库对某网站进行身份验证,该网站采用reCAPTCHA v3实现登录验证。使用pypasser库生成了reCAPTCHA令牌,但发送POST请求时始终返回401 Unauthorized错误。目标网站是https://public.txdpsscheduler.com。
import requests from pypasser import reCaptchaV3 headers = { "Accept": "application/json, text/plain, */*", "Accept-Language": "en-US,en;q=0.9", "Authorization": "", "Connection": "keep-alive", "Content-Type": "application/json;charset=UTF-8", "DNT": "1", "Origin": "https://public.txdpsscheduler.com", "Referer": "https://public.txdpsscheduler.com/", "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-site", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36", "sec-ch-ua": '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"', "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": '"macOS"', } reCaptcha_response = reCaptchaV3( "https://www.google.com/recaptcha/enterprise/anchor?ar=1&k=6LesF7oaAAAAAEvJD0hjmTUib8Q5PGjTo54U2ieP&co=aHR0cHM6Ly9wdWJsaWMudHhkcHNzY2hlZHVsZXIuY29tOjQ0Mw..&hl=en&v=EGbODne6buzpTnWrrBprcfAY&size=invisible&cb=n3itz0yfg7ny" ) json_data = { "UserName": "username", "RecaptchaToken": {"Action": "login", "Token": reCaptcha_response}, } response = requests.post("https://apptapi.txdpsscheduler.com/api/auth", headers=headers, json=json_data, verify=False) print(response.json())
可能的原因及解决方法
1. reCAPTCHA令牌生成参数错误
你传入reCaptchaV3的是完整锚点URL,但pypasser通常需要直接传入site key和目标页面URL。从锚点URL中提取site key为6LesF7oaAAAAAEvJD0hjmTUib8Q5PGjTo54U2ieP,修改生成逻辑:
reCaptcha_response = reCaptchaV3(site_key="6LesF7oaAAAAAEvJD0hjmTUib8Q5PGjTo54U2ieP", url="https://public.txdpsscheduler.com")
2. 请求缺少会话Cookie
网站可能需要会话Cookie来关联请求上下文,先通过GET请求获取Cookie再发送POST:
# 使用Session保持会话 session = requests.Session() session.get("https://public.txdpsscheduler.com", headers=headers, verify=False) # 用session发送登录请求 response = session.post("https://apptapi.txdpsscheduler.com/api/auth", headers=headers, json=json_data, verify=False)
3. 无效的Authorization头
当前Authorization头为空,可能干扰服务器验证逻辑,直接从headers中移除该字段:
headers = { # 移除 "Authorization": "", "Accept": "application/json, text/plain, */*", # 其他字段保持不变 }
4. Action参数不匹配
服务器可能验证reCAPTCHA的Action值是否与页面实际动作一致。打开浏览器开发者工具,查看真实登录请求中RecaptchaToken的Action字段,替换代码中的"login"为实际值。
5. pypasser对reCAPTCHA Enterprise支持不足
目标网站使用的是reCAPTCHA Enterprise版本,pypasser可能无法兼容这类验证。可以改用浏览器自动化工具(如Playwright、Selenium)模拟真实用户操作,直接获取页面生成的有效令牌。
内容的提问来源于stack exchange,提问作者S P Sharan
相关产品推荐
相关产品推荐

