App数据抓取

思路:
通过fiddler抓包工具,USB连接手机,配置端口,设置代理,抓取手机端的请求和数据,写入文本文件,需要编写手机模拟操作的自动化脚本,以便自动化采集数据





1.下载android sdk 、fiddler(抓包工具) 需要安卓手机一部,启动USB连接 ,安装手机驱动
2.安装fiddler 4.6.2.0 ,配置fiddle,配置tools-》 fiddlers options-》 Connections, 勾选allow remote computers to connect, 默认监听
端口为8888( 下图Fiddler listens on port就是端口号) , 若端口被占用可以设置成其他的, 配置好后要重新启动fiddler
设置过滤网站的方式:打开fiddler, 找到Filters选项并点击打开。
Use Filters 在这个选项上打勾,打开后我们可以看到下面的Host模式, 我们选择Show the following Hosts。 表示我们只在Fiddler上显示以下
域名的数据请求。然后我们再Hosts文本区域, 输入我们需要显示的域名, 如www.baidu.com或者是192.168.0.171等。 用分号分
割多个域名。 填好我们的域名后, 我们点击Actions选项并选择Run Filterset Now.现在就已经设置好了, 进行手机调试即可在手机上配置网络代理, 通过手机的设置功能-》 WLAN功能-》 具体的wifi名称的高级设置-》 代理-》 选择手动, 设置成自己电脑的
ip, 端口为8888, 手机和电脑连接同一个网络, 打开手机浏览器, 输入http://ip:端口号,(自己的ip和port),点击第二个安装证书
3、 打开fiddler, 工具栏选择Rules-> Customize Rules, 此时fiddler会创建Customize Rules.js
打开Customize Rules.js, 我们就可以在此编写自定义规则了(把手机访问的数据写入txt)如果不能生成txt文件,请用管理员身份打开fiddler

需要修改下面两处地方
在static function OnBeforeRequest(oSession: Session) { 方法中的最下面增加下面的代码
// add by dijian 2017/2/13 start
if (oSession.host.toLowerCase()=="wmapi.meituan.com")
{
var fso;
var file;
fso = new ActiveXObject("Scripting.FileSystemObject");
file = fso.OpenTextFile("c:\\Sessions.txt", 8, true, true);
file.writeLine("Request url: " + oSession.url);
//file.writeLine("Request header:" + "\n" + oSession.oRequest.headers);
//file.writeLine("Request body: " + oSession.GetRequestBodyAsString());
file.writeLine("\n");
file.close();
}//
add by dijian 2017/2/13 end
在static function OnPeekAtResponseHeaders(oSession: Session) {方法中的 static function OnBeforeResponse(oSession: Session) 方法最下面增加下面的代码
// add by dijian 2017/2/13 start
if (oSession.host.toLowerCase()=="wmapi.meituan.com")
{
oSession.utilDecodeResponse();
var fso;
var file;
fso = new ActiveXObject("Scripting.FileSystemObject");
file = fso.OpenTextFile("c:\\Sessions.txt",8 ,true, true); file.writeLine("Response code: " + oSession.responseCode);
file.writeLine("Response body: " + oSession.GetResponseBodyAsString());
file.writeLine("\n");
file.close();
}//
add by dijian 2017/2/13 end

打开c盘sessions.txt文件看一下具体的日志信息
4.monkeyrunner来实现脚本的录制和回放
在CMD下进入android的sdk下的tools目 录下, 进行下面的操作
录制: 1 、 在cmd下输入monkeyrunner recorder.py,
将打开下面的窗口
该窗口的功能:
1 、 可以自 动显示手机当前的界面
2、 自 动刷新手机的最新状态
3、 点击手机界面即可对手机进行操作, 同时会反应到真机, 而且会在右侧插入操作脚本
4:、 wait: 用来插入下一次操作的时间间隔, 点击后即可设置时间, 单位是秒
Press a Button: 用来确定需要点击的按钮, 包括menu、 home、 search, 以及对按钮的press、 down、 up属性
Type Something: 用来输入内容到输入框
Fling: 用来进行拖动操作, 可以向上、 下、 左、 右, 以及操作的范围
Export Actions: 用来导出脚本
Refresh Display: 用来刷新手机界面, 估计只有在断开手机后, 重新连接时才会用到
录制的脚本如下
[python] view plain copy
1. TOUCH| {' x' : 187, ' y' : 356, ' type' : ' downAndUp' , }
2. PRESS| {' name' : ' MENU' , ' type' : ' downAndUp' , }
3. WAIT| {' seconds' : 5. 0, }
4. DRAG| {' start' : (192, 128) , ' end' : (192, 640) , ' duration' : 1. 0, ' steps' : 10, }
回放: 使用命令monkeyrunner recorder_playback.py record_test.py
最后一个为录制的文件, 这里需要使用绝对路径

fiddler :fiddlerScript修改

static function OnBeforeResponse(oSession: Session) {
if (m_Hide304s && oSession.responseCode == 304) {
oSession["ui-hide"] = "true";
}
// add by dijian 2017/2/13 start
if (oSession.host.toLowerCase()=="wmapi.meituan.com"||oSession.host.toLowerCase()=="client.waimai.baidu.com")
{
oSession.utilDecodeResponse();
var fso;
var file;
fso = new ActiveXObject("Scripting.FileSystemObject");
file = fso.OpenTextFile("F:\\Sessions.txt",8 ,true, true);
            file.writeLine("Request header:" + "\n" + oSession.oRequest.headers);
            file.writeLine("token: " + oSession.GetRequestBodyAsString());
            file.writeLine("Response code: " + oSession.responseCode);
file.writeLine("Response body: " + oSession.GetResponseBodyAsString());
file.writeLine("\n");
file.close();
}
// add by dijian 2017/2/13 end
}


猜你喜欢

转载自st4024589553.iteye.com/blog/2363667