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

为什么pyppeteer开启请求拦截后页面加载超时无法正常工作?

pyppeteer请求拦截超时问题原因及解决方案

问题根因

该问题由pyppeteer异步事件回调的调度逻辑缺陷,与pyppeteer_stealth的注入逻辑共同触发:

  • pyppeteer的request事件监听原生支持异步回调函数,手动通过lambda嵌套asyncio.ensure_future注册回调时,会导致协程任务脱离pyppeteer内部的调度管控,部分请求的request.continue_()放行操作出现调度延迟甚至漏执行,请求一直处于 pending 状态,最终触发页面导航超时。
  • pyppeteer_stealth注入的防检测逻辑会触发额外的内部资源请求,这类请求的拦截处理如果没有及时响应,也会阻塞页面导航完成的判定逻辑。

解决方案

方案1:修正回调注册方式

删除回调注册时的lambda和asyncio.ensure_future封装,直接传入异步处理函数即可,pyppeteer底层已完成异步回调的适配:

await page.setRequestInterception(value=True)
# 直接传入异步函数,无需额外封装
page.on(event='request', f=intercept_network_request)

方案2:版本兼容检查

  • 确保使用的pyppeteer版本≥0.2.5,pyppeteer-stealth版本≥2.7.4,旧版本pyppeteer存在请求拦截回调的已知bug,会偶发请求pending问题。
  • 若版本符合要求仍出现异常,可在放行请求时显式指定参数:
await request.continue_(ignoreCache=False)

方案3:规避stealth冲突

如果确认是pyppeteer_stealth与请求拦截逻辑冲突,可在初始化时关闭部分和网络请求相关的注入项:

await stealth(page=page, run_on_insecure_origins=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:09:04