精华 真机远程页面调试工具spy-debugger 3.x:集成weinre+AnyProxy,页面调试+抓包。调试生产HTTPS页面。
发布于 9 年前 作者 wuchangming 22304 次浏览 最后一次编辑是 8 年前 来自 分享

项目名称: spy-debugger 项目地址:https://github.com/wuchangming/spy-debugger

关于spy-debugger

GitHub stars GitHub forks

特性

1、页面调试+抓包
2、操作简单
3、支持HTTPS
4、spy-debugger内部集成了weinrenode-mitmproxyAnyProxy
5、自动忽略原生App发起的https请求,只拦截webview发起的https请求。对使用了SSL pinning技术的原生App不造成任何影响。
6、可以配合其它代理工具一起使用(默认使用AnyProxy) (设置外部代理)

Demo

调试界面

demo.png

抓包界面

AnyProxy.jpg

安装

Windows 下

npm install spy-debugger -g

Mac 下

sudo npm install spy-debugger -g

三分钟上手

第一步:手机和PC保持在同一网络下(比如同时连到一个Wi-Fi下)

第二步:命令行输入spy-debugger,按命令行提示用浏览器打开相应地址。

第三步:设置手机的HTTP代理,代理IP地址设置为PC的IP地址,端口为spy-debugger的启动端口(默认端口:9888)。

第四步:安装证书。注:手机必须先设置完代理后再通过(非微信)手机浏览器访问http://spydebugger.com/cert安装证书(手机首次调试需要安装证书,已安装了证书的手机无需重复安装)。

第五步:用手机浏览器访问你要调试的页面即可。

自定义选项

端口

(默认端口:9888)

spy-debugger -p 8888

设置外部代理(默认使用AnyProxy)

spy-debugger -e http://127.0.0.1:8888

spy-debugger内置AnyProxy提供抓包功能,但是也可通过设置外部代理和其它抓包代理工具一起使用,如:Charles、Fiddler。

是否让weinre监控iframe加载的页面

(默认: false)

spy-debugger -i true

是否只拦截浏览器发起的https请求

(默认: true)

spy-debugger -b false

有些浏览器发出的connect请求没有正确的携带userAgent,这个判断有时候会出错,如UC浏览器。这个时候需要设置为false。大多数情况建议启用默认配置:true,由于目前大量App应用自身(非WebView)发出的请求会使用到SSL pinning技术,自定义的证书将不能通过app的证书校验。

是否允许HTTP缓存

(默认: false)

spy-debugger -c true

更多

spy-debugger原理是集成了weinre,简化了weinre需要给每个调试的页面添加js代码。spy-debugger原理是拦截所有html页面请求注入weinre所需要的js代码。让页面调试更加方便。

35 回复

第一个个人nodejs项目,大家多多支持

棒棒哒,加油

VS Code 把 NodeJS 和 Mono 的调试功能抽象出来了,大家就可以通过自定义 Debugger Adapter 和 VSCode Debug Protocol 从而实现自己的调试器。也可以试试这个

https://code.visualstudio.com/Docs/extensions/example-debuggers

更新 2.0 , 已支持HTTPS

棒棒哒,加油

@Einsy 谢谢!有问题,欢迎大家反馈!

最新优化:简化证书安装步骤

请问如何实现代理https的页面,并能实现修改页面的内容,例如插入一段js返回?

@Einsy 这个可以看下我的另外一个项目 node-mitmproxy 的 逻辑图: 实现逻辑在: https://github.com/wuchangming/node-mitmproxy/tree/v2.x#关于伪造https证书的逻辑图

最新2.x分支在开发中,如果想提前使用可以通过 npm install node-mitmproxy@next 引如项目中。

最新更新: 添加 可选项 -b: 是否只拦截浏览器发起的https请求. 说明:有些浏览器发出的connect请求没有正确的携带userAgent,这个判断有时候会出错,如UC浏览器。这个时候需要设置为false。大多数情况建议启用默认配置:true,由于目前大量App应用自身(非WebView)发出的请求会使用到SSL pinning技术,自定义的证书将不能通过app的证书校验。

最新更新: 修复websocket 无法正常转发问题

最新更新 1、提升速度,RSA-2048 改为 RSA-1024

好厉害的感觉!

最新更新: 1、通过引入iconv-lite解决GBK编码问题

证书无法安装 地址无法访问 @wuchangming

@c15881291595 手机要先设置代理后再安装证书 。 第一次启动spydebugger会生成CA证书,位置在你本机的%HOMEPATH%/node-mitmproxy/node-mitmproxy.ca.crt。证书的安装地址只是代理做了转发。

@wuchangming 但是微信里好像监控不了

@c15881291595 什么页面,应该都可以的。刷新下看看

@wuchangming 点的好友分享的内容进去监控不到 但是那个地址通过微信扫码可以监控到

@wuchangming 不过这样也可以 很好用 调试又方便了

@c15881291595 记起来了,有一种微信的页面确实不行:“mp.weixin.qq.com:443”这个域名下的页面当时注入脚本会报错,我就直接过滤掉了。 我抽时间看看是什么原因,修复下。

@c15881291595 , 该问题已在最新版本修复了。你更新下应该就好了。 accept-encoding的问题

好屌的样子。。

@SilenceDN 谢谢支持!

最新更新: 1、添加设置外部代理选项: https://github.com/wuchangming/spy-debugger#设置外部代理 spy-debugger本身没有提供抓请求包功能,但是可以通过设置外部代理来配合其它抓包代理工具一起使用,如:Charles、Fiddler。

最新更新: 1、内置集成AnyProxy。

iPhone + mac插上线就开始调试

@amor520 ,确实插线调是最直接的方式。但有些场景下可能就没办法了,比如微信的webview,其它app的webview,再或者android 4.3以下的版本。

回到顶部