添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

AnyProxy使用本地静态资源调试线上

场景估计大家都了解,所以我们直接开始吧。

调试原理很简单,就是anyproxy提供了一个http的拦截器和规则配置加载器,加载对应的规则后进行http的一些操作,如forward等等。

AnyProxy部分

安装AnyProxy,版本4.0

npm install -g anyproxy

编辑对应的rule
const resRegx = /\.[a-z0-9]{8}.min/i;
module.exports = {
    summary: 'a rule to modify response',
    * beforeSendRequest(requestDetail) {
        let path = requestDetail.url;
        let headers = requestDetail.requestOptions;
        // 如果是xxx的js,那么就修改为请求本地
        if (path.match(/.*xxx\.xxx\.com.*\.js/) || path.match(/.*xxx\.xxx\.com.*\.vm/)) {
            var newOption = Object.assign({}, requestDetail.requestOptions, {
                hostname: '127.0.0.1', // 本地ip
                port: 8080,
                headers: {...headers, host: '127.0.0.1'}
            });
            return {
                protocol: 'http',
                requestOptions: newOption
启动anyproxy

anyproxy --intercept --rule your_file.js

这样anyproxy就可以拦截默认端口8001了。接下来需要在ruleforward的静态文件路径server起来。所以我们需要一个静态文件服务器(因为我们项目访问JS有认证拦截,所以修改起来比较麻烦,就想看是否可以简单点).

静态服务器

这里可选的很多,最后选择了python的一行命令搭建当前目录的http静态服务器。

python -m SimpleHTTPServer 8080

上面看似已经连接起来了,但是如何让本地的请求端口80转发到对应的8001呢? 当然如果anyproxy拦截的就是80端口,那么这一步可以忽略。

使用的方法是在网络里添加http的proxy。这样完整的调用链条就形成了,可以愉快的玩耍了。

与Charles的对比

两者定位还是有很大的区别,所以放在一起对比可能不太合适。Charles更偏向网络层的应用,不具备加载Rule的能力。AnyProxy是一个Http代理服务器,只对Http(s)进行拦截。

在网络拦截的那一步,在想是不是用charles不用系统网络也可以?尝试了HTTP的PROXY并没有成功,这个可以等以后来填一下。

  1. AnyProxy Github

  2. 使用MITM调试线上前端错误

注意AnyProxy不是代理服务器, 而是和SocksCap32(应该认识吧)等类似软件用途差不多, 主要是对其他软件的网络行为进行透明代理。 AnyProxy支持多个代理协议。比如你拥有一个代理服务器a.a.a.a:8080是http的,你无须设置IE, 只要把a.a.a.a:8080设置到AnyProxy,然后通过在AnyProxy的进程列表对你想要代理的IE进程(iexplore.exe)进行代理, 这样IE的网络数据都是通过AnyProxy再经过a.a.a.a:8080出去的。AnyProxy还提供了简单的连接、数据监视功能。
AnyProxy不仅仅可以抓包,还可以拦截请求并修改服务端响应,实现接口mock功能。面试时候经常会问到第三方支付如何测试这种,如果对接的第三方没提供测试环境,那么就需要搭建一个mock服务器,模拟支付接口返回的各种情况。 rule模块 AnyProxy提供了二次开发的能力,你可以用js编写自己的规则模块(rule),来自定义网络请求的处理逻辑。 注意:引用规则前,请务必确保文件来源可靠,...
目前我使用的是Anyproxy,AnyProxy。这个软件的特点是可以获取到https链接的内容。在2016年年初的时候微信公众号和微信文章开始使用https链接。并且Anyproxy可以通过修改rule配置实现向公众号的页面中插入脚本代码。下面开始介绍安装与配置过程。 1、安装NodeJS 2、在命令行或者终端运行 npm install -g anyproxy,mac系统需要加上sud...
Book-Air:wechat_sprider chen$ node index.js [AnyProxy Log][2019-09-06 23:58:21]: throttle :10000kb/s [2019-09-06 23:58:21 <lvl> ]<Parser> Load [article_list] success [2019-09-06 23:58:21 <lvl> ]<Mysql> [AnyPr
关于anyproxy Anyproxy 是alibaba 前端团队开源的http/https 基于node的代理服务器。 业界的http代理工具在windows下有fiddler,mac有charles,为什么选择anyproxy呢?我个人认为有以下几个点: 同时兼容mac/windows用户 提供友好的web版界面,可实时观测网络请求...
$ spm install anyproxy-wsclient --save var anyproxyWsclient = require ( 'anyproxy-wsclient' ) ; new anyproxyWsclient ( { baseUrl : "127.0.0.1" , port : "8003" , //8003 is the default web socket port for anyproxy onOpen : function ( ) { console . log ( "connection stablished" ) ; fiddler可以抓包打断点后,修改返回的内容,便于模拟各种返回结果。anyproxy也可以通过写rule模块规则,模拟返回状态码、头部、body beforeSendResponse beforeSendResponse(requestDetail, responseDetail) AnyProxy向客户端发送请求前,会调用beforeSendResponse,并带上参数r...
一般生产环境的前端代码都是经过压缩的,压缩的代码难以解读和定位问题,虽然有Chrome这一利器,但是你会发现看那些变量是a、b、c的压缩代码,也是让你头大如斗。 fiddle可以在不替换生产环境css/js的情况下,用本地未压缩的css/js代码进行调试。 fiddle 的配置步骤一: Fiddle–&gt;Tools–&gt;Fiddle Options步骤二: 本地代码替换生产环境代码步骤三: 再次发起请求
2、配置fidder,捕获https请求 我调试的是移动端h5的代码,所以首先是打开我要调试的页面,利用fiddler捕获到我当前这个页面所有的请求,包括js,接口,图片等,因为页面可能存在缓存,所以请求的时候有可能不会重新获取这些文件,所以要清一次缓存,一定要让fiddler捕获到你要替换的js文件 这个是我线上的js文件,想要替... mab2hf: 放弃了,主流版本这几个类都没有,想override都没法。 https://docs.spring.io/spring-boot/docs/2.0.0.M3/reference/html/production-ready-metrics.html 这里面说到的,好像最后一次出现就是在2.0.0.M3上 Mapstruct使用问题Couldn‘t retrieve @Mapper annotation 阿松哥哥2018: 他这博文 artifactId 和groupId写反了,正确的如下 <artifactId>mapstruct</artifactId> <groupId>org.mapstruct</groupId> Spring的@Import注解和@ImportAware接口 sutonline: 👍,很有意思的一个实现方式! Spring的@Import注解和@ImportAware接口 半梦Oo: 突然开窍,感觉写一个@MyEnableCaching,根据同样的方案,继承AdviceModeImportSelector抽象类,相对于CachingConfigurationSelector仅仅替换掉getProxyImports方法内ProxyCachingConfiguration的配置导入,替换为自定义的Configuration也可以实现。并且风险更小。AdviceModeImportSelector是一个泛用的抽象类,Spring就算修改应该也是优化,不会有功能调整的变动。