真机远程调试工具spy-debugger(推荐)
十分方便的手机远程调试工具,集成weinre+AnyProxy+node-mitmproxy,支持HTTP/HTTPS,无需USB连接设备。一站式页面调试、抓包工具。远程调试任何手机浏览器页面,任何手机移动端webview(如:微信,HybirdApp等)。
spy-debugger 原理是集成了 weinre ,简化了 weinre 需要给每个调试的页面添加js代码。 spy-debugger 原理是拦截所有html页面请求注入 weinre 所需要的js代码。让页面调试更加方便。
weinre : weinre 简单易用,但是需要每个调试页面添加相应的js代码,并且只能调试http页面,想调试https页面时需结合ngrok反向代理工具,这个工具虽然安装容易,但是使用并不是很方便(可能由于国内被墙,一直未能成功访问页面)
特性
1.h5页面调试+抓包
2.操作简单
3.支持https(单独使用weinre只能访问http)
4.spy-debugger内部集成了weinre、node-mitmproxy、AnyProxy。
5.自动忽略原生 App 发起的 https 请求,只拦截 webview 发起的 https 请求。对使用了 SSL pinning 技术的原生 App 不造成任何影响。
6.可以配合其它代理工具一起使用(默认使用AnyProxy) (设置外部代理)
安装spy-debugger
1 | Windows 下 |

启动spy-debugger
spy-debugger -p 8888

启动成功后会浏览器会自动打开下面页面,则说明spy-debugeer初步完成

接下来,设置手机的HTTP代理,代理IP地址为PC的IP地址,端口为spy-debugger的启动端口(默认端口:9888)。
Android设置代理步骤:设置 - WLAN - 长按选中网络 - 修改网络 - 高级 - 代理设置 - 手动
iOS设置代理步骤:设置 - 无线局域网 - 选中网络 - HTTP代理手动

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

有时会出现设置代理之后所有页面都不能访问,证书也安装不上,此时只要将电脑的防火墙关闭就好了。(问题 : https://github.com/wuchangming/spy-debugger/issues/12 )

安装成功后,就可以手机访问h5页面啦,浏览器也可以很方便的审查元素和转包
审查元素

修改元素属性

抓包

设置外部代理(默认使用AnyProxy)
通常我们使用fiddler抓包工具,并且需要切换各种环境,所以自己设置外部代理就比较方便。
spy-debugger内置AnyProxy提供抓包功能,但是也可通过设置外部代理和其它抓包代理工具一起使用,如:Charles、Fiddler。
1 | spy-debugger -e http://127.0.0.1:8888 |
需要注意的是手机设置代理的端口为node-mitmproxy启动端口号。

这样就方便调试各个环境的页面了。

遇到的问题
严格模式报错
解决方法:
1.npm install strict-mode
2.’use strict’;
在报错的文件头部加一个’use strict’就ok了。
自定义选项
端口
(默认端口:9888)
spy-debugger -p 8888
设置外部代理(默认使用AnyProxy)
spy-debugger -e http://127.0.0.1:8888
spy-debugger内置AnyProxy提供抓包功能,但是也可通过设置外部代理和其它抓包代理工具一起使用,如:Charles、Fiddler。
设置页面内容为可编辑模式
该功能使页面内容修改更加直观方便。 (默认: false)
spy-debugger -w true
内部实现原理:在需要调试的页面内注入代码:document.body.contentEditable=true。暂不支持使用了iscroll框架的页面。
是否允许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
more
修复weinre在node.js V7版本会崩溃的bug
对weinre在页面document ready事件前,无法打印console.log日志进行了增强修复。
增强weinre打印未捕获异常(Uncaught Exceptions)功能。
spy-debugger原理是集成了weinre,简化了weinre需要给每个调试的页面添加js代码。spy-debugger原理是拦截所有html页面请求注入weinre所需要的js代码。让页面调试更加方便。