前言:

AnyProxy是一个开放式的HTTP代理服务器。
Github主页:[https://github.com/alibaba/anyproxy]
主要特性包括:

  • 基于Node.js,开放二次开发能力,允许自定义请求处理逻辑
  • 支持Https的解析
  • 提供GUI界面,用以观察请求

本次教程以Mac系统为主。


一、安装

作为全局模块,安装anyproxy:

sudo npm install -g anyproxy
命令行启动AnyProxy,默认端口号8001
sudo anyproxy
  • 启动后将终端http代理服务器配置为127.0.0.1:8001即可
  • 访问http://127.0.0.1:8002 ,web界面上能看到所有的请求信息

其他命令:配置启动端口,如8888端口启动

sudo anyproxy --port 

二、安装证书

1、Mac系统生成RootCA

命令行执行:sudo anyproxy –root
执行完成之后,会打开证书的安装路径,即可看到 rootCA.crt 文件,双击打开,找到刚刚导入的AnyProxy证书,配置为信任(Always Trust)。
 

2、iOS系统信任CA证书
1、配置手机Wi-Fi代理:本地IP+8001
2、点击web界面http://localhost:8002/中的 Root CA,按提示扫描二维码即可安装

3、按提示扫描二维码即可安装

4、信任CA证书:
设置->通用->关于本机->证书信任设置 中把AnyProxy证书的开关打开,否则safari将报错。

 
 

三、rule模块

AnyProxy提供了二次开发的能力,你可以用js编写自己的规则模块(rule),来自定义网络请求的处理逻辑。
下文编写anyproxy过滤规则my.js ,过滤规则是将请求资源地址、请求数据大小、接受数据大小记录到文件,代码如下:

var fs = require("fs");
var path = "/Users/wj/log1";
var log = path + "/" + "log.txt";
console.log(log); module.exports = {
*beforeSendRequest(requestDetail) {
//获取请求资源地址
url = requestDetail.url;
//获取Request数据大小
Request = requestDetail.requestData.length;
}, *beforeSendResponse(requestDetail, responseDetail){
//获取Response数据大小
Response = responseDetail.response.body.length;
fs.appendFileSync(log, url + "," + Request + "," + Response + "\n ", 'utf-8', function (err) {
if (err) throw err;
console.log('err');
});
},
};
引用规则命令:
sudo anyproxy --intercept --rule my.js

打开简书app,点击各个页面,查看log.txt:

 https://upload-images.jianshu.io/upload_images/7116457-7df74ab5437ee06a.png?imageMogr2/auto-orient/strip|imageView2/1/w/160/h/160,0,25332
https://upload-images.jianshu.io/upload_images/7116457-7df74ab5437ee06a.png?imageMogr2/auto-orient/strip|imageView2/1/w/160/h/160,0,5850
https://upload-images.jianshu.io/upload_images/7116457-7df74ab5437ee06a.png?imageMogr2/auto-orient/strip|imageView2/1/w/160/h/160,0,11190
https://upload-images.jianshu.io/upload_images/7116457-7df74ab5437ee06a.png?imageMogr2/auto-orient/strip|imageView2/1/w/160/h/160,0,1609
https://www.jianshu.com/mobile/notes/23257228/reward_section,0,0
https://www.jianshu.com/mobile/notes/23257228/reward_section,0,33254

逗号做分隔,资源地址、请求数据大小、返回数据大小,单位是字节数。


四、读取log文件

下一步使用python读取log文件内容,统计数据信息并做分析。

import xlwt

read = open("/Users/wangjuan/log1/log.txt", 'r')
file = xlwt.Workbook(encoding='utf-8', style_compression=)
sheet = file.add_sheet('data') line =
column =
title = ['Resource', '流量(KB)']
for i in title:
sheet.write(, column, i)
column += res = read.readlines()
for i in range(, len(res)):
res_list = res[i].split(",")
resource = res_list[].split(",")[]
resource_url = resource.split("?")[]
request_length = res_list[]
response_length = res_list[].split("\n")[]
length = int(response_length) - int(request_length) sheet.write(line, , resource_url)
sheet.write(line, , length)
line += file.save("/Users/wangjuan/log1/log.xls")

结果如下图:


以上~欢迎沟通~~

 

AnyProxy做App网络流量测试的更多相关文章

  1. GT-----如何做Android应用流量测试?

    1.如何判断一个应用的流量偏高? 如果看流量的绝对值看不出高低,那就找几个同类型的产品对比一下,如果完成同样的事物,被测应用比同类产品高很多,那就偏高了,可能有优化的空间. 2.如何找到有效的优化点? ...

  2. Android 网络流量监听开源项目-ConnectionClass源码分析

    很多App要做到极致的话,对网络状态的监听是很有必要的,比如在网络差的时候加载质量一般的小图,缩略图,在网络好的时候,加载高清大图,脸书的android 客户端就是这么做的, 当然伟大的脸书也把这部分 ...

  3. 在 anyproxy 上做 mock 和 fuzz 测试

    引言 写这个工具,主要有几个原因: 最近老大在尝试不同视角的测试----健壮性测试,任务下来,所以挽起袖子就开撸了 app很可能因为后端api做了变更,返回了一个异常的值而出现难以预知的问题,健壮性受 ...

  4. 网络流量分析——NPMD关注IT运维、识别宕机和运行不佳进行性能优化。智能化分析是关键-主动发现业务运行异常。科来做APT相关的安全分析

    科来 做流量分析,同时也做了一些安全分析(偏APT)——参考其官网:http://www.colasoft.com.cn/cases-and-application/network-security- ...

  5. 【读书笔记】iOS网络-测试与操纵网络流量

    一,观测网络流量. 观测网络流量的行为叫做嗅探或数据包分析. 1,嗅探硬件. 从iOS模拟器捕获数据包不需要做特别的硬件或网络配置.如果需要捕获这些数据包,那么可以使用嗅探软件来监听回送设备或是用于连 ...

  6. 【读书笔记】iOS-网络-测试与操纵网络流量

    一,观测网络流量. 观测网络流量的行为叫做嗅探或数据包分析. 1,嗅探硬件. 从iOS模拟器捕获数据包不需要做特别的硬件或网络配置.如果需要捕获这些数据包,那么可以使用嗅探软件来监听回送设备或是用于连 ...

  7. APP的CPU,内存,耗电,流量测试工具

    APP的CPU,内存,耗电,流量测试工具下载地址,后续文章会介绍如何使用Emmagee.itest.gt APP应用的CPU,内存,耗电,流量调查 可和同类产品比较,使用GT等工具:CPU靠syste ...

  8. [Android Pro] 网络流量安全测试工具Nogotofail

    reference to : http://www.freebuf.com/tools/50324.html 从严重的HeartBleed漏洞到苹果的gotofail 漏洞,再到最近的SSL v3 P ...

  9. 互联网App应用程序测试流程及测试总结

    互联网App应用程序测试流程及测试总结 1. APP测试基本流程 1.1流程图 仍然为测试环境 Pass 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日 ...

随机推荐

  1. WebDriverTest

    using OpenQA.Selenium.Firefox; using System; using System.Collections.Generic; using System.Linq; us ...

  2. Requests 校花网图片爬取

    纪念我们闹过的矛盾,只想平淡如水 import requestsimport reurl = 'http://www.xiaohuar.com/list-1-%s.html'for i in rang ...

  3. 关于解决JetBrains 激活问题

    今天升级了下JetBrains 的一系列产品,安装后打开发现以前的激活失效了. 在网上看到网友们各类屏蔽和寻找服务器,尝试了下都不太方便. 最后去rover的个人博客看了下,很给力,总能跟上JetBr ...

  4. Dos命令讲解

    目录 一.什么是DOS 二.启动DOS的多种方法 三.DOS的内部命令与外部命令 四.系统环境变量讲解 增加Path环境变量路径 常见的系统环境变量 五.常用的运行命令 六.DOS使用技巧 设置CMD ...

  5. Windows 下配置 Apache 支持 https

    1.打开cmd ,输入  F: // 切换到Apache安装路径,我的Apache安装目录在 F盘 2.cd F:\Apache\bin 3.set "openssl_conf = F:\A ...

  6. java 操作elasticsearch之搭建测试项目环境

    在创建项目之前请确认maven是否安装好,在此我是以环境都搭建好的情况下进行示范,现在以eclipse开发工具为例,具体操作如下: 1.创建maven项目 File - new -other 2.在p ...

  7. 搜索插入位置的golang实现

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 你可以假设数组中无重复元素. 输入: [,,,], 输出: 输入: [,,,] ...

  8. [php] yii debug设置

    最近在使用yii写rest api发现在所有错误信息都写在log文件里调试不是很直接 在index.php头部查入就ok了 defined('YII_ENABLE_EXCEPTION_HANDLER' ...

  9. arcgis javascript api 事件的监听及移除

    On Style Events 方式 var mapExtentChange = map.on("extent-change", changeHandler); function ...

  10. 从零上手Python关键代码

    来源 https://www.kesci.com/home/project/59e4331c4663f7655c499bc3