做移动端时的抓包spy-debugger

579 阅读4分钟

#####学会抓包的必要性
熟练掌握了抓包不仅能快速定位出问题,还能分析网络请求,以及一些前端逻辑的问题导致接口多次触发等现象。
所以一个合格的前端一定要会抓包,而且还要熟练掌握抓包工具,比如可以通过抓包工具些慢速网络,处理慢速网络时的一些交互,更重要的一点是,还可以用抓包工具配置页面的访问跳转,做混合开发时的一些测试页面。
抓包工具有哪些?
比较熟悉的是Mac上用Charles,Windows上用Fiddler。关于这两者的安装使用教程实在太多了,本文不做赘述,今天我给大家介绍一款集合了抓包和H5页面调试的工具spy-debugger。
为何开始使用spy-debugger
在开发过程中,我们的项目都是根据功能需求建一个开发的分支,等到了提测的时候,把分支合并到测试环境,测试通过再上线。基本这是一个统一的流程,但是做移动端混合开发的时,H5页面我们在本地开发的时候,在chrome中开启了移动端模式,基本上到手机上也不会有太大的问题。 但是上测试环境后,产品有的时候会需要改一些文案样式啊,每次遇到这种情况,临时改些东西都会先在本地的分支上改好,再合并到test分支然后编译上测试。往往很多时候,在浏览器的移动模式下改的东西,上到真机上并不是完全一样,会出现很多适配等问题,所以如果有一款调试工具,既能调试真机的页面,又能调试JS,还能抓包分析那多好。只需要给设备配置好本地的代理,然后我就可以在浏览器上修改真机的代码,还能看在真机上的效果,这样就大大提升了修改的效率,然后我就遇到了spy-debugger这个神器。

关于spy-debugger 一站式页面调试、抓包工具。远程调试任何手机浏览器页面,任何手机移动端webview(如:微信,HybridApp等)。支持HTTP/HTTPS,无需USB连接设备。 

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

使用案例
页面编辑模式 启动命令:spy-debugger -w true

weiner页面调试界面 

anyproxy抓包界面 

安装 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)。

Android设置代理步骤:
设置 - WLAN - 长按选中网络 - 修改网络 - 高级 - 代理设置 - 手动

iOS设置代理步骤:
设置 - 无线局域网 - 选中网络 - HTTP代理手动 

第四步:手机安装证书。注:手机必须先设置完代理后再通过(非微信)手机浏览器访问s.xxx (地址二维码)安装证书(手机首次调试需要安装证书,已安装了证书的手机无需重复安装)。iOS新安装的证书需要手动打开证书信任  第五步:用手机浏览器访问你要调试的页面即可。

自定义选项
端口  (默认端口: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

参考:juejin.cn/post/684490…
工具地址: github.com/wuchangming…
其他抓包工具(mobiledebug):www.mobiledebug.com/?invoke=jue…