使用Selenium Python绕过FunCaptcha:如何在回调函数提交Token?
解决Selenium Python中FunCaptcha Token的回调提交问题
当你已经拿到有效的FunCaptcha Token并修改了页面的fc-token值后,核心是找到页面注册的FunCaptcha回调函数并主动调用它,完成验证流程。以下是具体操作步骤:
- 定位回调函数名称
FunCaptcha加载后会在全局window对象下注册专属的回调函数,这个函数名通常绑定在fc-token元素的data-callback属性里。你可以通过Selenium获取这个属性值:
from selenium.webdriver.common.by import By # 获取回调函数ID callback_func_name = driver.find_element(By.CSS_SELECTOR, '[name="fc-token"]').get_attribute('data-callback')
- 等待回调函数加载完成
确保页面已经加载好这个回调函数,避免执行时出现未定义错误:
from selenium.webdriver.support.ui import WebDriverWait # 等待回调函数存在且为函数类型 WebDriverWait(driver, 15).until( lambda d: d.execute_script(f"return typeof window.{callback_func_name} === 'function';") )
- 调用回调函数提交Token
直接通过Selenium执行JavaScript,调用回调函数并传入你的有效Token:
your_valid_token = "你获取到的FunCaptcha Token" # 执行回调,提交Token driver.execute_script(f"window.{callback_func_name}('{your_valid_token}');")
注意事项
- 确保你的Token是当前页面FunCaptcha实例的有效Token,不同实例的Token无法通用
- 部分网站会检测Selenium特征,建议使用
undetected-chromedriver替代标准ChromeDriver,降低被检测概率 - 如果找不到
data-callback属性,可以在浏览器控制台执行console.log(Object.keys(window).filter(k => k.includes('Callback'))),手动排查可能的回调函数名
内容的提问来源于stack exchange,提问作者zjavas
相关产品推荐
相关产品推荐

