抓包工具及调试

Android Degug Bridge

Android操作系统与桌面电脑沟通的命令行工具,便于执行各种设备操作,如安装和调试应用。它是一种客户端-服务器程序,包括以下三个组件:参见

  • 客户端,用于发送命令,客户端在开发计算机上运行,可以通过发出adb命令从命令行终端调用客户端;
  • 守护进程,在设备上运行命令,守护进程在每个设备上作为后台进程运行;
  • 服务器,管理客户端和守护进程之间的通信,服务器在开发计算机上作为后台运行

工作原理

当启动某个adb客户端时,客户端会先检查是否有adb服务器进程正在运行,如果没有,他将启动服务器进程。服务器在启动后会与本地TCP端口5037绑定,并监听adb客户端发出的命令,所有adb客户端均通过端口5037adb服务器通信。服务器会与所有正在运行的设备建立连接,一旦发现adb守护进程,便会与相应的端口建立连接。服务器与所有设备建立连接后,可以使用adb命令访问这些设备,可以从任意客户端控制任意设备。

使用步骤

  • 手机设置---关于手机---版本号(连续点击 5下)
  • 设置---其他设置---开发者选项---打开开发者选项,开启USB调试

adb命令

  • adb device -l 生成已连接设备列表

  • adb install -r path_to_apk 在连接的设备上安装apk

  • adb push local remote将 某个 文件复制到设备

  • adb pull remote local从设备中复制某个文件

  • adb logcat <option> 用于转储系统消息日志,包括设备抛出错误时的堆栈轨迹

    • -d将日志转储到屏幕并退出

    • -e <exp>只输出日志消息与<exep>匹配的行

    • -t <count> 仅输出最新的行数

抓包工具

抓包:抓取本地电脑与远端服务器通信时传递的数据包。抓包工具主要用于网络分析,抓取的经过网卡的所有数据包,不限于单一的应用程序或进程,可用于各种场景的网络故障数据的抓取工作。

Chrome开发者工具

网页调试

内置于Google Chrome中的Web开发和调试工具,可用来对网站调试和分析。对网络中请求资源的查看主要是在Network中进行。

移动端调试

Chrome中的Remote devices可以远程调试 Android设备上的实时内容,将Android设备上的内容抓屏到开发计算机上的DevTools实例中。

  • 传输线连接,Android设备上打开Developer Options,选择 Enable USB Debugging
  • Chrome中打开DevToolsRemote devicesdevices可以打开调试界面,使用WebView的应用也会显示在该区域。

Charles

PC端常用的网络抓包工具,在移动端开发时,为调试与服务器端的网络通讯协议,使用charles抓捕分析。可以实现:

  • 截取HTTPHTTPS网络封包
  • 支持重发网络请求,方便后端调试
  • 支持修改网络请求参数
  • 支持网络请求的截获并动态修改
  • 支持模拟慢速网络

配置

  • 打开代理,proxy---windows proxymac proxy
  • 设置抓取https
    • PC端安装证书并信任。Help---SSL Proxying---Install charles root certificatemac通过钥匙串访问设置,windows通过certmgr.msc查看
    • 移动端安装证书,proxy---proxy settings设置允许代理及端口号,然后安装移动端证书。
    • 解决http乱码问题:proxy---SSL proxying settings---Enable proxying settings *:443

常用功能

  • breakpoints设置断点,修改请求响应数据。
    • Structure中右键点击url选择breakpoints
    • proxy---breakpoints settings出现弹层,双击url---Edit Breakpoints,勾选相应的requestresponse
    • 重新访问接口,自动跳转breakpoints界面
    • 修改数据后点击execute即可
  • Map remote 将指定的网络请求重定向到一个网址请求
    • 右键点击url设置后重新访问页面即可
  • Map Local 将指定的网络请求重定向到本地文件
    • 右键点击url设置后重新访问页面即可

whistle

whistle是基于Node的跨平台web调试代理工具,主要用于查看、修改HTTPHTTPSWebsocket的请求、响应,也可以作为HTTP代理服务器使用,不同于Fiddler通过断点修改请求响应的方式,whistle采用的是配置系统host的方式,一切操作可以通过配置实现,支持域名、路径、正则表达式、通配符、通配路径等多种匹配方式。参见

安装与配置

  • 安装与检查
  (sudo) npm install -g whistle
  w2 help
  • 启动
w2 start
  • 重启
w2 restart
  • 停止
w2 stop
  • 移动端配置代理
    • 代理服务器:127.0.0.1,如果部署在远程服务器或虚拟机上,改成对应服务器或虚拟机的ip
    • 默认端口8899
  • 访问配置页面,通过ip + port 形式访问即可

常用功能

  • 把响应替换成本地文件内容
www.sp.com file://D:/dist/
  • Composer

用来重发请求、构造请求,可以自定义请求的url、请求方法、请求头、请求内容

  • Weinre

用于调试远程页面,特别是移动端网页

  • 设置hosts

hosts文件(域名解析文件)用于存储计算机网络中个节点信息的计算机文件,用于将主机名映射到相应的ip地址,补充或取代网络中DNS的功能。

www.sp.com 127.0.0.1
//指定url中的ip和端口,把请求转发到本地8080端口,在开发中可用来去掉url中的端口号

Android中Webview无法打开HTTPS链接

调试锁屏界面时,打不开锁屏界面,一直以为是代理证书的问题走了很多坑 ,后面 参考 发现,手机添加了代理后无法打开WebViewdebug版本的锁屏则可以,应该是里面针对这个问题做了一定的代码处理。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容