zoukankan      html  css  js  c++  java
  • AnyProxy代理

    背景:当一个公司测试团队有多个人的时候,只需搭建一个AnyProxy服务,其它小伙伴浏览器上打开AnyProxy页面,手机上设置代理就能抓到http、https请求了。解决了部分人电脑不正经的小伙伴fiddler死活抓不到https请求的问题,也解决了破解charles安装的问题,也不用在每个电脑都去安装一个抓包工具的问题。AnyProxy 是完全可以灵活配置的代理服务器。它支持 https明文代理 ,且提供了 Web 界面便于观测请求情况,同时支持二次开发,可以用 JavaScript 来控制代理的全部流程。

            简介:AnyProxy是阿里团队基于node.js开发的一款抓包神器,可以抓取http、https、websocket请求,且高度可定制。优点:

    1.同时兼容mac/windows用户

    2.只需打开web页面,就能抓到手机app上的http、https请求了

            下面介绍一下安装步骤,因为本人使用Mac,所以以Mac安装为例(Windows安装步骤也是类似的):

    安装NodeJS:在官网https://nodejs.org/en/下载安装包,下载左边的LTS版本,傻瓜式安装即可 ,如图

    安装完成后输入node -v查看版本号

    cnpm安装anyproxy:由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。可以通过输入 :npm -v来测试是否成功安装,如图

    如果npm版本过低,可以通过指令升级npm版本:npm install npm -g

    通过npm直接安装anyproxy(不过安装速度比较慢):npm install -g anyproxy

    因为安装npm很慢,可以通过cnpm安装,使用淘宝镜像地址,这个相当于是npm的升级版,先用npm安装cnpm,淘宝镜像地址:http://registry.npm.taobao.org,命令如下:npm install -g cnpm --registry=https://registry.npm.taobao.org

    用cnpm安装anyproxy(安装速度快):cnpm install -g anyproxy

    如果报以下错误提示没有权限,可以在命令前加sudo,如图

    启动anyproxy:在终端输入:anyproxy,如图

    打开浏览器输入:http://localhost:8002或者http://127.0.0.1:8002,就能打开anyproxy页面了(此时还不能抓包)

    要想找到https请求,电脑上还需安装证书,打开anyproxy web页面-->RootCA-->Download-->rootCA.crt,傻瓜式下一步安装,如图

    确认https证书是否安装可以输入命令查看:anyproxy-ca,如图

    安装证书,然后进入证书目录,如图

    通过anyproxy -i命令启动监听即可捕获https请求

    电脑启动代理,如图

    然后手机安装证书,可以直接在浏览器中输入http://xxxx:8002/fetchCrtFile(ip换成自己anyproxy机器地址),安装证书,如图

    证书安装完成后,在手机上设置代理,如图

    在手机上打开app操作,就能抓到app上 的请求了,如图

            anyproxy还可以代理websocket,在终端输入命令:anyproxy --ws-intercept

    使用anyproxy -i不能关闭命令行,不过可以使用pm2来管理anyproxy,:pm2 start anyproxy -x -- -i

    通过pm2来初始化并启动一个anyproxy,启动anyproxy后可以随时关闭命令行,若要查看anyproxy启动状况,执行命令:pm2 list

    如果要关闭anyproxy:pm2 stop anyproxy

    如果要再启动anyproxy:pm2 start anyproxy

    如果要重启anyproxy:pm2 restart anyproxy

            Anyproxy提供的配置还是很灵活的,它提供的一个典型的规则模块代码结构如下:

    // rule.js
    module.exports = {
    // 模块介绍
    summary: 'my customized rule for AnyProxy',
    // 发送请求前拦截处理
    *beforeSendRequest(requestDetail) { /* ... */ },
    // 发送响应前处理
    *beforeSendResponse(requestDetail, responseDetail) { /* ... */ },
    // 是否处理https请求
    *beforeDealHttpsRequest(requestDetail) { /* ... */ },
    // 请求出错的事件
    *onError(requestDetail, error) { /* ... */ },
    // https连接服务器出错
    *onConnectError(requestDetail, error) { /* ... */ }
    };
    调用 anyproxy --rule rule.js 即可。

            Anyproxy的配置灵活,其他的使用规则可以参考官方文档:http://anyproxy.io/cn/。
    ————————————————
    版权声明:本文为CSDN博主「dou_being」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/dou_being/article/details/101150024

  • 相关阅读:
    pycharm中将文件目录标记为sources root和sys.path.append()效果一样
    简单的股票信息查询系统 1 程序启动后,给用户提供查询接口,允许用户重复查股票行情信息(用到循环) 2 允许用户通过模糊查询股票名,比如输入“啤酒”, 就把所有股票名称中包含“啤酒”的信息打印出来 3 允许按股票价格、涨跌幅、换手率这几列来筛选信息, 比如输入“价格>50”则把价格大于50的股票都打印,输入“市盈率<50“,则把市盈率小于50的股票都打印,不用判断等于。
    添加jar到本地maven库
    jquery.qrcode中文乱码的解决终极办法
    easyUI datagrid view扩展
    CANNOT READ PROPERTY ‘opera’ OF UNDEFINED解决方法
    关于 Promise 的一些简单理解
    Java 内功修炼 之 数据结构与算法(一)
    学习一下 JVM (三) -- 了解一下 垃圾回收
    学习一下 JVM (二) -- 学习一下 JVM 中对象、String 相关知识
  • 原文地址:https://www.cnblogs.com/cnsanshao/p/12028279.html
Copyright © 2011-2022 走看看