AnyProxy做App网络流量测试

简介: 前言:AnyProxy是一个开放式的HTTP代理服务器。Github主页:[https://github.com/alibaba/anyproxy]主要特性包括:基于Node.js,开放二次开发能力,允许自定义请求处理逻辑支持Https的解析提供GUI界面,用以观察请求本次教程以Mac系统为主。

前言:

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 8888

二、安装证书

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=0)
sheet = file.add_sheet('data')

line = 1
column = 0
title = ['Resource', '流量(KB)']
for i in title:
    sheet.write(0, column, i)
    column += 1

res = read.readlines()
for i in range(0, len(res)):
    res_list = res[i].split(",")
    resource = res_list[0].split(",")[0]
    resource_url = resource.split("?")[0]
    request_length = res_list[1]
    response_length = res_list[2].split("\n")[0]
    length = int(response_length) - int(request_length)

    sheet.write(line, 0, resource_url)
    sheet.write(line, 1, length)
    line += 1

file.save("/Users/wangjuan/log1/log.xls")
结果如下图:

以上~欢迎沟通~~

 

作者:搁浅
出处: http://www.cnblogs.com/xiaoxi-3-/
如果对您有帮助,请关注我的同名简书:https://www.jianshu.com/u/da1677475c27
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

目录
相关文章
|
2月前
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
156 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
4月前
|
SQL 安全 测试技术
网络安全的屏障与钥匙:漏洞防护与加密技术解析软件测试的艺术:探索性测试的力量
【8月更文挑战第27天】在数字时代的海洋中,网络安全是保护我们数据资产的灯塔和堤坝。本文将深入浅出地探讨网络安全领域的关键要素——安全漏洞、加密技术以及不可或缺的安全意识。通过实际案例分析,我们将了解如何识别和修补潜在的安全漏洞,掌握现代加密技术的工作原理,并培养起一道坚固的安全防线。文章旨在为读者提供实用的知识和技能,以便在日益复杂的网络环境中保持警惕,确保个人及组织信息的安全。
|
4月前
|
机器学习/深度学习
神经网络与深度学习---验证集(测试集)准确率高于训练集准确率的原因
本文分析了神经网络中验证集(测试集)准确率高于训练集准确率的四个可能原因,包括数据集大小和分布不均、模型正则化过度、批处理后准确率计算时机不同,以及训练集预处理过度导致分布变化。
|
1月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
99 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1月前
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
32 1
|
1月前
|
数据采集 网络协议 算法
移动端弱网优化专题(十四):携程APP移动网络优化实践(弱网识别篇)
本文从方案设计、代码开发到技术落地,详尽的分享了携程在移动端弱网识别方面的实践经验,如果你也有类似需求,这篇文章会是一个不错的实操指南。
61 1
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
125 1
|
1月前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
2月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
66 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
人工智能 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(4-2):渗透测试行业术语扫盲完结:就怕你学成黑客啦!)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(4-2):渗透测试行业术语扫盲完结:就怕你学成黑客啦!)作者——LJS

热门文章

最新文章