
【免费下载链接】ruyipage下一代Python的web自动化过检测框架AI自我调试运行trace日志可分析一切网页链路通过一切网站检测的Firefox指纹浏览器。RuyiPage is a Python-based Firefox automation framework built on the next-generation WebDriver BiDi protocol.项目地址https://gitcode.com/gh_mirrors/ru/ruyipage点击查看免费下载ruyiPage 是一款基于 WebDriver BiDi 协议的 Python Firefox 指纹浏览器自动化框架而page.debugger是它的隐藏王牌在 BiDi 规范没有断点、Firefox 又移除 CDP 的今天它通过 Firefox DevTools 的 RDP 通道提供完整的 JS 断点、XHR 断点、单步执行、调用栈与作用域检查能力。本文带你从开启调试器到排查线上问题一次掌握 BiDi 时代的调试全流程。为什么 BiDi 时代调试这么难先说清楚一个背景理解了你就明白page.debugger的价值BiDi 规范里没有断点WebDriver BiDi 覆盖导航、输入、网络、脚本注入但刻意不含断点/单步这类能力。Firefox 移除了 CDP老一套 Chrome DevTools Protocol 在 Firefox 上已不可用。于是 ruyiPage 另开一条通道——RDPRemote Debugging Protocol即 Firefox DevTools 自己的调试协议与 BiDi 连接并行工作源码见 ruyipage/_units/debugger.py 与底层封装 ruyipage/_adapter/rdp.py。两条通道各管一摊BiDi 负责页面自动化RDP 负责断点级调试互不干扰。一键开启两步接入 JS 断点开启调试器只需要两行——创建页面前调用enable_debugger()导航后调用debugger.start()opts FirefoxOptions() opts.enable_debugger() # 写入所需 pref 并启动 devtools server page FirefoxPage(opts) page.get(https://example.com) page.debugger.start()enable_debugger()内部会自动设置devtools.debugger.remote-enabled等配置、关闭连接授权弹窗、并添加--start-debugger-server启动参数实现见 ruyipage/_configs/firefox_options.py#L436-L475你完全不用关心细节。 无人值守脚本建议加个保险page.debugger.start(auto_resume_after90)。JS 被断住期间所有依赖 JS 的 BiDi 调用都会阻塞这个参数会在暂停超时后自动恢复执行防止页面永久卡死。JS 断点核心流程下断点 → 暂停 → 看现场完整的调试闭环只有五步找源码debugger.sources(url_containsapp.js)列出页面已加载的 JS 源source_text()拿到的正是引擎正在执行的那一份行号与断点、调用栈完全对齐内联script也不例外。定位行号breakable_lines(url)返回可下断点的行号避免猜错位置被静默忽略。下断点set_breakpoint(url, line)支持condition条件断点和log_value日志断点。等暂停wait_paused(timeout30)返回PausedStatewhy、line、exception一目了然。看现场frames()读调用栈scope()读作用域变量含thisstep_over()/step_into()/step_out()单步resume()恢复执行。一个最小示例完整版见 examples/55_js_debugger.pybp page.debugger.set_breakpoint(app.js, 42, conditioni 0) state page.debugger.wait_paused(timeout30) print(state.why, state.line) print(page.debugger.scope()) # 当前帧局部变量 this page.debugger.step_over() page.debugger.resume()⚠️ 新手最容易踩的坑暂停期间 run_js 会卡死JS 线程暂停时run_js、点击、取元素文本等一切依赖 JS 的操作都会阻塞到超时。正确做法是把触发断点的动作放到后台线程threading.Thread( targetlambda: page.run_js(return window.buildCart();), daemonTrue, ).start() state page.debugger.wait_paused(timeout30) # 主线程安心等暂停这个模式在 examples/55_js_debugger.py#L38-L51 里有完整实现配套的测试页面在 tests/fixtures/pages/debugger_complex.js回归测试在 tests/features/test_debugger.py。XHR 断点与事件断点不读源码也能抓现场断点必须知道哪个文件第几行但很多问题是不知道问题在哪。ruyiPage 提供了两种免源码断点XHR/fetch 断点set_xhr_breakpoint(/api/order, POST)——请求 URL 命中片段时立即暂停暂停状态state.is_xhr为真。适合排查这个接口到底带了什么参数、响应为什么不对。DOM 事件断点set_event_breakpoints([event.mouse.click])——点击事件被派发时暂停直接看事件处理器调用栈专治点了没反应。可用available_event_breakpoints()查看内核支持的全部事件分组。page.debugger.set_xhr_breakpoint(/, ANY) state page.debugger.wait_paused(timeout20) print(state.is_xhr) # True因 XHR/fetch 而暂停 page.debugger.remove_xhr_breakpoint(/, ANY)日志断点与属性监视点无暂停的暗中观察日志断点不暂停set_breakpoint(url, line, log_valuei, sum)命中时把表达式求值结果打到调试管道用wait_logs(count3)取回。适合高频路径——比如循环里逐轮观察累加值完全不阻塞页面。属性监视点CDP 都没有的能力watch_property(obj, token, onset)某个属性被谁改掉时暂停。排查这个配置值是谁覆盖的时一抓一个准。此外pause_on_exceptions(True, ignore_caughtTrue)让未捕获异常直接停在出错现场调用栈和作用域都还热着不必先猜位置再下断点。进阶技巧像 DevTools 一样舒适方法用途include_async_frames(True)调用栈向上追溯 async/await 链看清是谁发起的blackbox(react.js)单步时跳过框架内部不再一头扎进第三方库skip_breakpoints(True)临时忽略全部断点不用逐个删除expand(obj, depth2)/get_property(obj, name)突破 preview 浅层上限深挖暂停现场的对象entries(map_obj)/call(func, [21])读 Map/Set 完整条目、远程调用页面已有函数read_string(long_str)取回被截断的超长字符串完整内容实战用调试器辅助攻克检测ruyiPage 常被用来研究反检测机制。配合 trace 日志与断点你可以暂停在挑战脚本内部查看它读取了哪些指纹值这类排查的典型路径用 XHR 断点停住挑战脚本的数据回传 →scope()看它提交的上报字段 →frames()找到生成指纹的调用帧 → 再针对性调整指纹参数指纹模块见 ruyipage/_fingerprint/。总结与延伸阅读page.debugger让 BiDi 时代的 Firefox 自动化重新拥有了完整的断点调试能力JS 断点、XHR 断点、事件断点、日志断点、监视点、异步栈、黑盒化一应俱全且与 BiDi 连接并行不悖。完整 API 与注释ruyipage/_units/debugger.py全部玩法示例examples/55_js_debugger.py源码、断点单步、日志断点、监视点、异常、事件/XHR、黑盒/异步栈八大场景全覆盖回归测试tests/features/test_debugger.py单元测试tests/test_debugger_unit.py赞分享【免费下载链接】ruyipage下一代Python的web自动化过检测框架AI自我调试运行trace日志可分析一切网页链路通过一切网站检测的Firefox指纹浏览器。RuyiPage is a Python-based Firefox automation framework built on the next-generation WebDriver BiDi protocol.项目地址https://gitcode.com/gh_mirrors/ru/ruyipage点击查看免费下载相关推荐Midway 项目调试实战VSCode 与 WebStorm/IDEA 断点调试完全指南Midway 项目调试实战VSCode 与 WebStorm/IDEA 断点调试完全指南 Midway 是基于 IoC 容器构建的 Node.js Serve后端微服务云原生Nuxt 调试完全指南Source Map、Node Inspector 与 IDE 断点调试实战Nuxt 调试完全指南Source Map、Node Inspector 与 IDE 断点调试实战 调试是开发全栈 Vue 应用Nuxt时最高频的技术环节前端后端Web框架SSRMidway Hooks 本地调试完全指南VSCode 与 JetBrains 全家桶断点调试实战Midway Hooks 本地调试完全指南VSCode 与 JetBrains 全家桶断点调试实战 本文聚焦 Midway Hooks一体化全栈方案应用在后端微服务云原生创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考