真机联调经常使用方式和强大的Fiddler
whistle真机调试css
以前发表过一篇文件关于真机调试的几种方式,可是都各自有些不便的地方,最近发现一个不错的工具就补充上来了html
whistle(读音[ˈwɪsəl]
,拼音[wēisǒu]
)是基于Node实现的跨平台抓包调试代理工具,有如下基本功能:android
安装启动whistle,须要如下步骤: 安装Node(我默认大家本身会装)、安装&启动whistle、配置代理git
yarn global add whistle // ----------OR--------- npm install -g whistle
能够经过如下方式来访问配置页面:github
http://local.whistlejs.com/
,若是没法访问通常是由于没有启动whistle或者配置代理http://whistleServerIP:whistlePort/
. e.g. http://127.0.0.1:8899
-P xxxx
自定义whistle的端口(xxxx
表示要设置的端口号),自定义端口支持上述两种方式访问,也支持 http://127.0.0.1:xxxx
w2 start -p 8899 //不设置端口默认使用8899 [i] whistle@1.14.0 started [i] 1. use your device to visit the following URL list, gets the IP of the URL you can access: http://127.0.0.1:8899/ http://192.168.x.xxx:8899/ Note: If all the above URLs are unable to access, check the firewall settings For help see https://github.com/avwo/whistle [i] 2. configure your device to use whistle as its HTTP and HTTPS proxy on IP:8899 [i] 3. use Chrome to visit http://local.whistlejs.com/ to get started
w2 help
启动完成后在chorme下打开 127.0.0.1:8899
能够看到这么一个页面:正则表达式
通常不必进行全局代理,因此咱们直接跳过chrome
在chrome扩展应用安装Proxy SwitchyOmega
,成功以后按照以下截图设置
而后点击扩展程序选项
,配置以下
新开Tab打开百度,而后返回127.0.0.1:8899
页面就看到已经能够抓取请求了npm
配置当前Wi-Fi的代理
而后再在手机经过IP+端口方式访问http://whistleServerIP:whistlePort/segmentfault
按照截图步骤安装便可浏览器
打开浏览器扫二维码便可
rootca.pro
,按提示安装证书(或者经过 whistle 控制台的二维码扫码安装,iOS安装根证书须要到链接远程服务器进行验证,须要暂时把Https拦截功能关掉)Settings > General > About > Certificate Trust Testings
whistle
控制台二维码扫码安装,或者浏览器地址栏 rootca.pro
按提示安装点击页面上方菜单栏的Create
按钮,新建一个名为test
的分组,并参照下面例子输入对应的规则配置,记得输完以后右键分组保存一下规则.
默认方式
# 默认是将匹配模式写在左边,操做uri写在右边 pattern operatorURI
传统方式
# 操做URI写在左边 operatorURI pattern
组合方式
# 传统组合方式 pattern operatorURI1 operatorURI2 operatorURIN # 若是pattern部分为路径或域名,且operatorURI为域名或路径 # 这种状况下也支持一个操做对应多个pattern operatorURI pattern1 pattern2 patternN
指定www.test.com的ip和端口,把请求转发到本地8899端口
www.test.com 127.0.0.1:8899 # or 127.0.0.1:8899 www.test.com
保存以后输入新开Tab输入地址www.test.com
会重定向到127.0.0.1:8899
本地新建文本test.txt
# Mac、Linux不熟悉,不太清楚 # Windows的路径分隔符能够用 \ 或者 / www.test.com file://C:\test.txt
www.test.com域名下的请求都替换成对应的www.test2.com域名
www.test.com www.test2.com
whistle会自动根据响应内容的类型,判断是否注入相应的文本及如何注入(是否要用标签包裹起来)。
www.test.com file://C:\test.html www.test.com file://C:\test.js www.test.com file://C:\test.css
全部www.test.com
域名下的请求,whistle都会根据响应类型,将处理好的文本注入到响应内容里面,如是html请求,js和css会分别自动加上script
和style
标签后追加到内容后面。
查看请求响应的详细信息及请求列表的Timeline,还有请求匹配到的规则
用来重发请求、构造请求,能够自定义请求的url、请求方法、请求头、请求内容。
能够直接复制下面的连接试试
https://www.baidu.com/s?ie=ut...
Create
:建立规则分组Delete
:删除分组Edit
:重命名分组Settings
Theme
:设置主题Font size
:设置字体大小Show line number
:是否显示行数Allow multiple choice
:是否容许多选Disable all rules
:是否禁用全部规则,包括插件的规则Disable all plugins
:是否禁用插件规则Synchronized with the system hosts
:是否把配置同步到本地的hosts文件(须要root权限)Import system hosts to Default
:导入本地的hosts配置到Default分组(须要root权限,且会覆盖原来的配置)表示只要匹配其中一个条件的请求就不会在当前页面的Network里面显示,多个条件用空格或换行分割,支持如下条件: /^(m|i|h|b|c|d|H)
表示若是里面设置了条件,则要匹配该条件,且不匹配 Exclude Filter 的请求才会显示在当前页面的Network里面,可设置的条件及分割符同 Exclude Filter。
当前whistle是否在线及查看whistle服务的基本信息
主要用于调试远程页面特别是移动端页面,能够经过此功能把远程页面 console
打印的信息展现出来
Console
显示页面抛出的异常或经过 console
打印的信息Server
显示 whistle 内部发生的异常信息All Logs
用于切换不一样页面的 log 显示显示页面抛出信息,以百度为例
# pattern log:// m.baidu.com log://
# pattern log://filepath m.baidu.com log://C:\work\project\test\test.js # 脚本代码以下 # console.error({ error: true }); # console.warn({ error: true, warn: { test: true } }); # console.log(123456);
# 下面表示匹配pattern的同时不能为post请求且请求头里面的cookie字段必须包含test(忽略大小写)、url里面必须包含 cgi-bin 的请求 # 即:过滤掉匹配filter里面的请求 pattern operator1 operator2 excludeFilter://m:post includeFilter://h:cookie=test includeFilter:///cgi-bin/i # 下面表示匹配pattern一、pattern2的请求方法为post、或请求头里面的cookie字段不能包含相似 `uin=123123` 且url里面必须包含 cgi-bin 的请求 operator pattern1 pattern2 includeFilter://m:post excludeFilter://h:cookie=/uin=o\d+/i excludeFilter:///cgi-bin/i # 下面表示匹配pattern的请求忽略除了host之外的全部规则 pattern ignore://*|!host # 下面表示匹配pattern的请求忽略file和host协议的规则 pattern ignore://file|host
手机或者PC打开百度随意点击一个请求都能看到当下的输出信息
只需配置一条规则便可经过在pc上经过weinre修改网页的DOM结构及其样式
在rules里配置规则
# test只是做为一个区分,方便多个不一样页面调试 m.baidu.com weinre://test
打开Weinre>test,看到截图以下
而后就能开始作调试了