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

如何使用HTTPX携带Anti-Captcha获取的gRecaptchaResponse绕过Google reCAPTCHA V2并完成后续数据搜索?

如何使用HTTPX携带Anti-Captcha获取的gRecaptchaResponse绕过Google reCAPTCHA V2并完成后续数据搜索?

看起来你已经通过Anti-Captcha拿到了有效的reCAPTCHA响应值,但在把这个值提交给目标网站、完成验证并执行后续搜索时遇到了卡点。我来帮你梳理正确的流程,同时修正你代码里的问题:

一、先正确从Anti-Captcha获取gRecaptchaResponse

你代码里初始化了recaptchaV2Proxyless但没实际调用它来获取响应,这是第一步要补全的:

def solve_captcha(self):
    """调用Anti-Captcha API获取reCAPTCHA响应"""
    self.solver.set_verbose(1)
    self.solver.set_key(self.api_key)
    self.solver.set_website_url(self.url)  # 目标网站的URL
    self.solver.set_website_key(self.website_key)  # 目标网站的reCAPTCHA Sitekey

    # 执行破解,获取结果
    captcha_result = self.solver.solve_and_return_solution()
    if captcha_result["errorId"] == 0:
        # 返回有效的gRecaptchaResponse
        return captcha_result["solution"]["gRecaptchaResponse"]
    else:
        raise Exception(f"Anti-Captcha破解失败: {captcha_result['errorDescription']}")

这里要确保你传入的api_key和website_key是正确的——website_key就是目标网站reCAPTCHA控件里的data-sitekey值。

二、将gRecaptchaResponse提交到目标网站的验证表单

你在parse方法里找到了表单的action地址,接下来需要把拿到的gRecaptchaResponse作为表单参数提交,完成reCAPTCHA验证(这一步要保持同一个HTTPX Client会话,因为验证后网站会设置会话cookie):

def parse(self):
    """获取目标网站的表单提交地址,并完成reCAPTCHA验证"""
    # 先访问目标页面,获取表单信息和必要的cookie
    soup = self.client.get(url=self.url, headers=self.headers)
    # 找到表单的action地址
    form_action = soup.css_first("form#SLSearchForm[action]").attrs["action"]
    base_url = f"https://mybaragar.com/{form_action}"

    # 先获取gRecaptchaResponse
    g_recaptcha_response = self.solve_captcha()

    # 准备表单提交的参数(除了reCAPTCHA,还要带上表单里的其他必填参数)
    form_data = {
        "g-recaptcha-response": g_recaptcha_response,
        # 这里需要补充表单里的其他必填字段,比如搜索关键词、地区等,你可以从页面源码里找到
        # 比如"searchTerm": "your_search_query",
        # "location": "west_vancouver"
    }

    # 提交表单,完成reCAPTCHA验证
    validation_response = self.client.post(base_url, data=form_data, headers=self.headers)
    # 验证是否提交成功,可以检查响应状态码或者页面内容
    if validation_response.status_code == 200:
        print("reCAPTCHA验证成功,已进入搜索页面")
        # 返回验证后的会话,方便后续搜索
        return validation_response
    else:
        raise Exception("reCAPTCHA验证失败,请求返回异常")

注意:表单里除了g-recaptcha-response,肯定还有其他必填参数,你需要从目标网站的表单源码里把这些参数找出来,一起放到form_data里。

三、执行后续的数据搜索请求

验证完成后,同一个HTTPX Client已经持有了有效的会话cookie,直接用它来执行搜索请求即可:

def search(self, update: bool = False):
    """完成数据搜索并处理结果"""
    # 先完成reCAPTCHA验证,获取验证后的页面响应
    validated_response = self.parse()

    # 这里可以从validated_response里提取搜索结果,或者构造新的搜索请求
    # 比如如果搜索是通过另一个接口,可以构造请求参数
    search_params = {
        # 补充搜索需要的参数,比如从页面里拿到的csrf token、搜索关键词等
    }

    search_response = self.client.get("https://mybaragar.com/your_search_endpoint", params=search_params, headers=self.headers)
    # 处理搜索结果,比如解析HTML或者JSON
    # 示例:用BeautifulSoup解析页面
    search_soup = BeautifulSoup(search_response.text, "html.parser")
    # 提取你需要的数据...

    # 你之前代码里的geographic.org部分和目标网站无关,建议替换成目标网站的搜索逻辑
    # 如果确实需要从外部CSV获取搜索关键词,那可以保留这部分,但要把关键词传入目标网站的搜索请求
    if update:
        searcher = SearchGenerator(
            search_url="https://geographic.org/streetview/canada/bc/west_vancouver.html",
            update_data=update,
        )
        reports = searcher.report()
        df = pd.read_csv(reports)
        # 遍历CSV里的关键词,逐个发起搜索请求
        for index, row in df.iterrows():
            search_term = row["your_keyword_column"]
            # 构造包含关键词的表单参数,重新提交搜索
            form_data = {
                "g-recaptcha-response": self.solve_captcha(),  # 如果每次搜索都需要验证,这里要重新获取
                "searchTerm": search_term
            }
            self.client.post(base_url, data=form_data, headers=self.headers)
            # 处理当前搜索结果...

几个关键注意点

  • 保持会话一致性:全程使用同一个self.client(HTTPX Client),这样才能保留网站设置的会话cookie,避免重复验证。
  • 表单参数完整性:一定要把目标网站表单里的所有必填参数都带上,只传g-recaptcha-response是不够的。
  • Anti-Captcha调用时机:如果目标网站每次搜索都需要验证reCAPTCHA,那每次搜索前都要调用solve_captcha获取新的响应值;如果验证一次就可以多次搜索,那就只需要调用一次。

备注:内容来源于stack exchange,提问作者perymerdeka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 14:50:27