CNode

真机远程页面调试工具spy-debugger 3.x:集成weinre+AnyProxy,页面调试+抓包。调试生产HTTPS页面。

精华
分享
Wwuchangming发布于10 年前最后回复10 年前35 回复41865 浏览0 收藏

项目名称: 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)

W
wuchangming#1·10 年前

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

I
i5ting#2·10 年前

棒棒哒,加油

I
i5ting#3·10 年前

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

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

W
wuchangming#4·10 年前

更新 2.0 , 已支持HTTPS

B
Baiang#5·10 年前

支持下

W
wuchangming#6·10 年前
引用 Baiang支持下

@Baiang 谢谢

E
Einsy#7·10 年前

棒棒哒,加油

W
wuchangming#8·10 年前
引用 Einsy棒棒哒,加油

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

W
wuchangming#9·10 年前

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

E
Einsy#10·10 年前

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

W
wuchangming#11·10 年前
引用 Einsy请问如何实现代理https的页面,并能实现修改页面的内容,例如插入一段js返回?

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

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

W
wuchangming#12·10 年前

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

X
xizai2012#13·10 年前

牛逼了忒

W
wuchangming#14·10 年前

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

W
wuchangming#15·10 年前

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

A
alsotang#16·10 年前

好厉害的感觉!

W
wuchangming#17·10 年前

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

C
c15881291595#19·10 年前

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

W
wuchangming#20·10 年前
引用 c15881291595证书无法安装 地址无法访问 @wuchangming

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

W
wuchangming#22·10 年前
引用 c15881291595@wuchangming 但是微信里好像监控不了

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

C
c15881291595#23·10 年前
引用 wuchangming@c15881291595 什么页面,应该都可以的。刷新下看看

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

C
c15881291595#24·10 年前
引用 wuchangming@c15881291595 什么页面,应该都可以的。刷新下看看

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

W
wuchangming#25·10 年前
引用 c15881291595@wuchangming 不过这样也可以 很好用 调试又方便了

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

W
wuchangming#26·10 年前

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

G
gaoli861121#27·10 年前

棒棒哒

W
wwhgtt#28·10 年前

好屌的样子。。

S
SilenceDN#29·10 年前

已star

W
wuchangming#30·10 年前
引用 SilenceDN已star

@SilenceDN 谢谢支持!

J
jsserH#31·10 年前

赞,好用

W
wuchangming#32·10 年前

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

W
wuchangming#33·10 年前

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

A
amor520#34·10 年前

iPhone + mac插上线就开始调试

W
wuchangming#35·10 年前
引用 amor520iPhone + mac插上线就开始调试

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

参与回复
登录后即可参与回复。登录