whistle工具全程入门
接触过前后端开发的同学应该都了解网络请求代理工具fiddler(mac下面常用的是Charles),可以用来拦截分析请求、包装请求、本地调试和移动端代理开发调试等。多多少少,fiddler和Charles使用起来还是有些区别,不过还好都是可视化的界面使用配置起来也都比较方便。
先说下使用体验。对于一个追求高效的开发者来说,总是觉得要经常切换两个工具的使用比较麻烦,但是配置规则不通用,fiddler+willow组合的使用很不错,但也总是让电脑比较慢,而且规则配置需要点击输入显得不那么高效;Charles是mac上一款不错的网络代理工具,不过是收费的,价格不便宜(当然你可以找破解),但是路径替换功能使用起来比较麻烦,这点体验很不好。在两个平台上都折腾过,而且要经常切来切去(自己的电脑是windows),后来决定尝试入坑whistle(由avenwu@tencent开发),发现非常高效易用,解决了困扰多年的问题。这里总结梳理下常用的功能和使用方式。
whistle文档入口在这里,安装入门使用和原理介绍略过,执行下面命令,然后打开 http://127.0.0.1:8899 就可以了。
npm i -g whistle #需要配代理的自己配
w2 start
一看就懂,当然文档是比较基础的,内容全,但也比较多,不适合快速入门,所以这里为大家梳理下实际开发中常用的一些规则配置,快速入门,大家可以对应fiddler或Charles的使用对号入座。
使用一键代理切换
安装启动whistle后,通常浏览器需要设置代理指向whistle Server地址127.0.0.1:8899,为了方便切换,chrome下推荐安装使用proxyOmega插件来提高切换效率,这样就可以一键切换代理。
打开界面我们主要关注Rules菜单项,点击create就可以在规则集合里面书写规则了。
1. host映射和特定子路径的host映射,whistle不仅支持传统的host配置,还支持子路径和端口的host转发配置
10.125.36.59 ke.qq.com # 直接的host配置
127.0.0.1:8086 ke.qq.com www.qq.com # 对全部域名路径替换host
10.125.36.59 ke.qq.com/ads # 对特定的路径替换host
2. 本地文件或文件路径替换,协议头可以加也可以不加,不加表示匹配所有协议,否则只对某个协议生效。类似willow的路径替换。
ctc.i.gtimg.cn/qzone/biz/gdt/atlas/mod/message.html C:\Users\ouvenzhang\Desktop\edit.html # 单个文件的本地替换
ctc.i.gtimg.cn/qzone/biz/ C:\Users\ouvenzhang\Desktop\biz\build\ # 文件路径的替换,一般用这条就可以了
http://ctc.i.gtimg.cn/qzone/biz/ C:\Users\ouvenzhang\Desktop\biz\build\ #只针对http请求的文件路径替换
3,请求转发,将指定域名请求转发到另一个域名
www.qq.com ke.qq.com # 指定域名转发生效
**.qq.com ke.qq.com # 所有qq.com子域名转发生效
4,脚本注入,可以将一段脚本(可以使html、js、CSS片段)注入到dom页面中进行调试
ke.qq.com html://E:\xx\test\test.html
ke.qq.com js://C:\Users\ouvenzhang\Desktop\gdt\console.js
ke.qq.com css://E:\xx\test\test.css
5, 匹配模式,可以根据正则式匹配路径
#/keyword/i #关键字匹配
/ke\.qq\.com\/atlas\/(\d+)\/order\/edit/i C:\Users\ouvenzhang\Desktop\gdt\edit.html # 正则匹配
ke.qq.com/atlas/25610/order/edit C:\Users\ouvenzhang\Desktop\gdt\edit.html # 直接匹配
6,忽略特性的请求内容
/qq.com/ filter://rule|hide # 忽略包含qq域名下的请求并不在network中显示
/spa\-monitor\.min\.js/i filter://rule # 忽略匹配包含spa-monitor.min.js,但在network中显示,相当于文件白名单
7,请求改写与接口mock
ke.qq.com ua://{test_ua} #注意这里的改写是whistle抓包请求的改写,浏览器调试看到的内容仍然是原来的
ke.qq.com/ec/api.php?mod=utilities&act=estimate tpl://{mock-price}
test_ua和mock-price是values里面的设置,那么对应请求会直接返回values对应的内容,很方便:
8, 远程调试,把手机的请求代理到whistle,ip为whistle所在机器的ip,端口号为whistle的监听的端口号(默认为:8899) 配置要注入的请求(系统会自动判断是否为html,如果不是则不会自动注入)
# xxx为对应的weinre id,主要用于页面分类,默认为anonymous
www.example.com weinre://xxx
9, 设置https代理
https的内容文档写的比较清楚,设置也很简单,这里就不重复了https://avwo.github.io/whistle/webui/https.html
小结:除此之外,whistle还有更多复杂强大的功能,不过目前我们常用的就上面这些,了解这些就基本满足我们的开发配置了,需要了解更多内容,大家可以进一步查阅具体文档了解。whistle文档
whistle工具全程入门的更多相关文章
- 项目自动化建构工具gradle 入门5——在intellij中做一个gradle的web工程
之前的几个小节,都是纯手工建文件夹,纯手工拷贝war包,或者纯手工解压个zip看看结果,,,,这还是我写了玩的helloWorld.若是玩大工程.几十个人的团队协同开发时,这么玩,,,,暴躁的程序员估 ...
- 项目自动化建构工具gradle 入门4——javaWeb在浏览器中显示helloWorld
在java应用中,其实做的最多的还是java web应用.所以现在我们做的就是用gradle构建一个简单的web项目,简单点,直接上代码吧. 1.进入目录D:\work\gradle\web,新建文件 ...
- 项目自动化建构工具gradle 入门3——生一个exe的helloWorld
前两次呢,我们能够用一个外部的jar 来实现输出helloWorld.但问题是我每次都要用java -jar 来执行,这样我们自己玩还可以,让用户玩就不好了.所以我们生成一个exe给他们吧.这次我们仍 ...
- 项目自动化建构工具gradle 入门2——log4j输出helloWorld
上一章节呢,有一个能跑的程序了.但是对做工程的人来说,用日志输出感觉比用System.out要有档次一点.比如使用log4j.直接上例子: 1进入D:\work\gradle\log目录 ,您电脑没 ...
- (转)前端构建工具gulp入门教程
前端构建工具gulp入门教程 老婆婆 1.8k 2013年12月30日 发布 推荐 10 推荐 收藏 83 收藏,20k 浏览 本文假设你之前没有用过任何任务脚本(task runner)和命令行工具 ...
- MyBatis-Plus工具快速入门
MyBatis-Plus官方文档:http://mp.baomidou.com/#/quick-starthttp://mp.baomidou.com/guide/#%E7%89%B9%E6%80%A ...
- 版本控制工具Git工具快速入门-Linux篇
版本控制工具Git工具快速入门-Linux篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.版本管理系统的介绍 1>.版本管理系统的特点 1.1>.自动生成备份: ...
- 版本控制工具Git工具快速入门-Windows篇
版本控制工具Git工具快速入门-Windows篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近在学习Golang语言,之前的开发环境在linux上开发的,后来由于办公用的是w ...
- [转]VS2015 Git 源码管理工具简单入门
VS2015 Git 源码管理工具简单入门 1.VS Git插件 1.1 环境 VS2015+GitLab 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本 ...
随机推荐
- Kademlia、DHT、KRPC、BitTorrent 协议、DHT Sniffer
catalogue . 引言 . Kademlia协议 . KRPC 协议 KRPC Protocol . DHT 公网嗅探器实现(DHT 爬虫) . BitTorrent协议 . uTP协议 . P ...
- 使用git遇到的一些问题
上传github时忽略.DS_Store方法 这个文件在mac中是管理文件夹的位置之类的信息,所以并没有必要上传到git中,这个时候就需要用git.gitignore文件来忽略此类文件. 在默认情况下 ...
- zookeeper的Java端API应用
1. 基本使用 org.apache.zookeeper.Zookeeper是客户端入口主类,负责建立与server的会话.它提供了表1所示几类主要方法: 功能 描述 create 在本地目录树中创建 ...
- vim学习之改头换面(基础配置)
还记得在线有个维护博客园的学长说过,这网站的前端做的贼丑,今日一看果真如此.其实我想说毕竟干货多,没有那么多花花肠子.下面开始进入正题. 在入坑了sublime.vscode.atom.notepad ...
- kudu系列: Java API使用和效率测试
Kudu+Impala很适合数据分析, 但直接使用Insert values语句往Kudu表插入数据, 效率实在不好, 测试下来insert的速度仅为80笔/秒. 原因也是显然的, Kudu本身写入效 ...
- Android Studio的project中两个build.gradle配置的区别
一般创建一个android项目后回出现两个gradle: build.gradle(Project):用来配置整个工程的 build.gradle(app):一个是用来配置app的 对compile和 ...
- 【三】Eureka服务注册与发现
1.是什么 Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是一个基于 REST 服务,用于定位服务,以实现云端中间层服务发现和故障转移.服务注册与发现对于微服务架构来说是非常 ...
- java8 新特性 Optional容器类
public class Godness { private String name; public Godness() { } public Godness(String name) { this. ...
- Java8新特性 并行流与串行流 Fork Join
并行流就是把一个内容分成多个数据块,并用不同的线程分 别处理每个数据块的流. Java 8 中将并行进行了优化,我们可以很容易的对数据进行并 行操作. Stream API 可以声明性地通过 para ...
- 割点判断+luogu 3469 POI2008 BLO
1.根节点,有2棵及以上子树 2.非根节点,有子节点dfn[u]<=low[v] #include <bits/stdc++.h> #define N 1000050 using n ...