You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用已破解的reCAPTCHA结合Python Requests抓取重定向页面

解决reCAPTCHA验证后无法访问目标页面的问题

你遇到的核心问题是POST验证请求时的参数、请求头或reCAPTCHA配置不符合服务器校验逻辑,以下是具体修复方案:

关键问题排查与修复

  • 修正Referer请求头
    手动验证时,POST到/imahuman的Referer是原目标页https://isoms.lasallecounty.org/portal/Jail,而非验证页本身。你的代码里Referer设成了验证页,这会被服务器判定为异常请求。

  • 补充ReturnUrl参数
    服务器需要明确验证通过后重定向的目标地址,手动提交的表单里必然包含ReturnUrl=/portal/Jail参数,你的代码里缺失了这个关键项。

  • 指定reCAPTCHA V3的Action
    reCAPTCHA V3的验证需要匹配页面指定的action值,你需要先手动抓包找到验证页的action(比如可能是portal_imahuman或类似),然后在solver中设置该值,否则验证分数可能不达标。

修改后的完整代码

import os
import requests
from bs4 import BeautifulSoup
from anticaptchaofficial.recaptchav3proxyless import recaptchaV3Proxyless

# 初始化Session和请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
}
session = requests.Session()

# 初始请求获取验证令牌、SiteKey和必要Cookie
response = session.get("https://isoms.lasallecounty.org/portal/Jail")  # 自动重定向到/imahuman
soup = BeautifulSoup(response.text, "lxml")
token = soup.find("input", {"name": "__RequestVerificationToken"})["value"]
site_key = soup.find("div", {"id": "recaptcha"})["data-sitekey"]

# 抓包获取的reCAPTCHA Action,替换为实际值
captcha_action = "your_captcha_action_here"

# 调用Anti-Captcha求解reCAPTCHA V3
solver = recaptchaV3Proxyless()
solver.set_verbose(1)
solver.set_key(os.getenv("ANTICAPTCHA_API_KEY"))
solver.set_website_url("https://isoms.lasallecounty.org/portal/imahuman")
solver.set_website_key(site_key)
solver.set_action(captcha_action)  # 新增Action设置
solver.set_min_score(0.9)

g_response = solver.solve_and_return_solution()
if g_response != 0:
    print("reCAPTCHA验证成功!")
else:
    print(f"验证失败,错误码:{solver.error_code}")
    exit()

# 构造完整的POST参数,包含ReturnUrl
data = {
    "g-recaptcha-response": g_response,
    "__RequestVerificationToken": token,
    "ReturnUrl": "/portal/Jail"  # 新增重定向目标参数
}

# 更新Referer为原目标页
headers["Referer"] = "https://isoms.lasallecounty.org/portal/Jail"

# 提交验证请求
response = session.post(
    "https://isoms.lasallecounty.org/portal/imahuman",
    headers=headers,
    data=data,
    allow_redirects=True
)

# 检查是否成功访问目标页
if "/portal/Jail" in response.url:
    print("目标页面访问成功!")
    # 这里可以处理response.text获取页面内容
else:
    print(f"请求失败,当前URL:{response.url}")
    print(f"响应状态码:{response.status_code}")

额外注意事项

  1. 抓包确认Action值:用浏览器开发者工具的Network面板,找到reCAPTCHA的请求(通常是https://www.google.com/recaptcha/api2/reload或V3的/siteverify相关请求),查看其中的action参数值,替换代码中的your_captcha_action_here。
  2. Cookie一致性:确保Session全程复用,不要中途创建新的Session,避免丢失服务器设置的会话Cookie。
  3. 状态码与响应内容排查:如果还是失败,打印response.text查看服务器返回的具体错误信息,比如令牌无效、验证分数不足等,针对性调整。

内容的提问来源于stack exchange,提问作者OJT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:57:34