使用charles 与 proxyDroid抓取android应用websocket包
最近发现一个有意思的现象,使用charles可以抓取android手机浏览器的websocket包但是无法抓取到app的websocket包。
实验一
使用charles抓取android手机浏览器的websocket包。使用一下代码启动一个nodejs的websocket服务端。
穿件文件夹test,并在test里面穿件test.js文件:
// 导入WebSocket包 const WebSocket = require('ws'); // 创建WebSocket服务器监听3000端口 const wss = new WebSocket.Server({ port: 3001 }); // 监听连接事件,当客户端连接到WebSocket服务器时触发 wss.on('connection', function connection(ws) { // 每秒向前端发送消息 const timer = setInterval(() => { ws.send('I am Nodejs WebSocket'); }, 1000); // 监听前端发过来的消息,并在控制台输出消息内容 ws.on('message', function incoming(message) { // 获取查询参数 const queryParams = conn.path.split('?')[1]; console.log('query', queryParams) console.log('received: %s', message); }); // 监听断开连接事件,清除计时器 ws.on('close', function close() { clearInterval(timer); }); });
进入test文件夹,安装 nodejs ws模块
npm i ws
启动websocket服务
node test.js
使用websocket 在线测试工具测试,并抓包:http://wstool.js.org/ (使用android手机浏览器访问),抓包的websocket数据包如下:

可以看到抓取到了android浏览器的websocket包
实验二
android app 集成websocekt后无法抓取到websocket数据包,解决方案:
- 一个root的android手机或使用模拟器
- 下载 https://proxydroid.en.uptodown.com/android (proxyDroid),给手机配置全局socket代理
- charles配置socket抓包
1、root的android手机
2、下载安装proxyDroid,并配置如下

3、charles配置如下:

4、开始抓包:

可以看到,已经能抓取到app的websocket包了
    博客里大都是转载的内容,其目的主要用户知识的组织和管理。
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号