AnyProxy做App网络流量测试
前言:
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网络流量测试的更多相关文章
- GT-----如何做Android应用流量测试?
1.如何判断一个应用的流量偏高? 如果看流量的绝对值看不出高低,那就找几个同类型的产品对比一下,如果完成同样的事物,被测应用比同类产品高很多,那就偏高了,可能有优化的空间. 2.如何找到有效的优化点? ...
- Android 网络流量监听开源项目-ConnectionClass源码分析
很多App要做到极致的话,对网络状态的监听是很有必要的,比如在网络差的时候加载质量一般的小图,缩略图,在网络好的时候,加载高清大图,脸书的android 客户端就是这么做的, 当然伟大的脸书也把这部分 ...
- 在 anyproxy 上做 mock 和 fuzz 测试
引言 写这个工具,主要有几个原因: 最近老大在尝试不同视角的测试----健壮性测试,任务下来,所以挽起袖子就开撸了 app很可能因为后端api做了变更,返回了一个异常的值而出现难以预知的问题,健壮性受 ...
- 网络流量分析——NPMD关注IT运维、识别宕机和运行不佳进行性能优化。智能化分析是关键-主动发现业务运行异常。科来做APT相关的安全分析
科来 做流量分析,同时也做了一些安全分析(偏APT)——参考其官网:http://www.colasoft.com.cn/cases-and-application/network-security- ...
- 【读书笔记】iOS网络-测试与操纵网络流量
一,观测网络流量. 观测网络流量的行为叫做嗅探或数据包分析. 1,嗅探硬件. 从iOS模拟器捕获数据包不需要做特别的硬件或网络配置.如果需要捕获这些数据包,那么可以使用嗅探软件来监听回送设备或是用于连 ...
- 【读书笔记】iOS-网络-测试与操纵网络流量
一,观测网络流量. 观测网络流量的行为叫做嗅探或数据包分析. 1,嗅探硬件. 从iOS模拟器捕获数据包不需要做特别的硬件或网络配置.如果需要捕获这些数据包,那么可以使用嗅探软件来监听回送设备或是用于连 ...
- APP的CPU,内存,耗电,流量测试工具
APP的CPU,内存,耗电,流量测试工具下载地址,后续文章会介绍如何使用Emmagee.itest.gt APP应用的CPU,内存,耗电,流量调查 可和同类产品比较,使用GT等工具:CPU靠syste ...
- [Android Pro] 网络流量安全测试工具Nogotofail
reference to : http://www.freebuf.com/tools/50324.html 从严重的HeartBleed漏洞到苹果的gotofail 漏洞,再到最近的SSL v3 P ...
- 互联网App应用程序测试流程及测试总结
互联网App应用程序测试流程及测试总结 1. APP测试基本流程 1.1流程图 仍然为测试环境 Pass 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日 ...
随机推荐
- 由内省引出JavaBean的讲解
IntroSpector--内部检查,了解更多细节--内省---JavaBean 一.JavaBean JavaBean是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用户访问 ...
- python+mongodb+flask的基本使用
最近在做一个设备管理系统的后端,需要用python结合mongodb来实现,查了一下flask框架是比较合适的,自己摸索了好久一步步慢慢实现基本功能. 在程序开始之前请确保mongodb服务是开启的, ...
- 17秋 软件工程 团队第五次作业 Alpha Scrum12
各个成员今日完成的任务 Alpha版本完成. 项目的发布说明 本版本的新功能 1.部门人员管理,包括纳新申请与审核: 2.部门活动发布与查看: 3.部门活动相册: 4.子部门信息录入. 软件对运行环境 ...
- Python 操作 Excel,总有一个模块适合自己
最近在写性能相关的测试脚本,脚本已经完成,最终怎么体现在报告上,要想让报告看起来漂亮些,我们是先创建一个模板(格式和公式已全部制作好),只需要性能测试完成后往对应的sheet页中填充数据,数据完成后最 ...
- django 中的 ajax
(Asynchronous Javascript And XML ) 特点: 异步 页面局部刷新 传递的数据量小 ajax 请求返回数据 重定向 location.href='/index/' 发请求 ...
- 解决HTTP status code is not handled or not allowed
/Books/>: HTTP status code is not handled or not allowed 2017-11-04 17:21:38 [scrapy.spidermiddle ...
- 用Python读写Excel文件的方式比较
虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TAB分割的文本文件(TSV),再在Ex ...
- Python数据分析实例操作
import pandas as pd #导入pandas import matplotlib.pyplot as plt #导入matplotlib from pylab import * mpl. ...
- spring boot thymeleaf 标签未关闭报错
每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code spring boot,input标签未关闭报bug,代码稍有不慎就出小问题,后来百度,goo ...
- sql server 压缩备份数据库
转自 https://www.cnblogs.com/527289276qq/p/6273291.html 今天需要把一个省外项目的数据库从服务器上备份.拷贝到本机(跨地域传输数据库备份文件). 连上 ...