Python开发aniworld.to爬虫遭遇Google Captcha验证码拦截问题咨询
aniworld.to爬虫重定向页验证码问题解决方案
问题说明
- 开发目标:实现输入动漫名称即可自动下载aniworld.to站点对应全部剧集的爬虫工具,目前除重定向链路外其余功能均正常运行。
- 卡点细节:站点Watch按钮跳转的
https://aniworld.to/redirect/SOMETHING页面部署Google Captcha验证码,目标跳转链接不直接出现在静态HTML源码中,无法通过常规静态解析获取。 - 场景特征:验证码触发频率极低,仅需提取验证完成后格式为
https://vidoza.net/embed-something.html的重定向链接即可。 - 参考资源:项目处于早期开发阶段,代码仓库:aniworld_scraper。
推荐实现方案
结合验证码低触发的特征,优先选择人工辅助验证的自动化方案,成本最低、稳定性最高,无需对接付费服务。
实现思路
用支持浏览器内核的Python自动化框架加载重定向页面,默认保持浏览器窗口可见:
- 未触发验证码时,工具自动等待页面跳转,匹配到vidoza格式的目标链接后直接提取,全程无需人工介入
- 触发验证码时,用户直接在弹出的浏览器窗口中手动完成验证,工具持续监听页面跳转事件,验证通过拿到目标链接后自动关闭浏览器,继续后续下载流程
- 开启浏览器持久化上下文,本地存储验证后的Cookie、站点缓存,后续请求复用已有状态,进一步降低验证码触发概率
实现提示:不需要额外编写验证码检测逻辑,只要保持浏览器窗口可见,触发验证码时用户可直观看到验证组件自行操作,工具只需要负责监听跳转拿结果即可,整体开发量极低。
参考实现(基于Playwright)
首先安装依赖:pip install playwright && playwright install chromium
核心逻辑代码:
import re from playwright.sync_api import sync_playwright # 匹配目标vidoza链接格式 VIDOZA_URL_PATTERN = re.compile(r"^https://vidoza\.net/embed-.*\.html$") def fetch_vidoza_url(redirect_suffix: str, wait_timeout: int = 120) -> str: """ 传入redirect路径后缀,返回验证后的vidoza播放链接 wait_timeout: 最长等待时间(秒),留足人工过验证码的时间 """ target_url = "" with sync_playwright() as p: # 启动持久化浏览器上下文,本地缓存Cookie降低验证码触发率 context = p.chromium.launch_persistent_context( user_data_dir="./browser_cache", headless=False, # 必须关闭无头模式,触发验证码时可供人工操作 args=["--no-first-run", "--no-default-browser-check"] ) page = context.pages[0] if context.pages else context.new_page() # 监听所有页面跳转,匹配到目标链接直接记录 def handle_navigation(frame): nonlocal target_url current_url = frame.url if VIDOZA_URL_PATTERN.match(current_url): target_url = current_url page.on("framenavigated", handle_navigation) page.goto(f"https://aniworld.to/redirect/{redirect_suffix}") # 轮询等待获取目标链接 for _ in range(wait_timeout): if target_url: break page.wait_for_timeout(1000) context.close() if not target_url: raise TimeoutError("等待验证超时,未获取到有效播放链接") return target_url
不推荐的方案说明
不建议使用纯自动绕过验证码的方案:
- 目前Google reCAPTCHA没有稳定的纯本地免费绕过方案,所有自动绕过能力基本都依赖第三方打码平台,需要按调用次数付费
- 这类方案依赖验证码平台的识别成功率,随着官方反爬规则更新随时可能失效,结合当前场景验证码触发率极低的特征,投入产出比极低,完全没有必要接入。
内容的提问来源于stack exchange,提问作者ZKWolf
相关产品推荐
相关产品推荐

