• whistle 匹配模式


    HTTPS、Websocket 需要开启 HTTPS 拦截才可以正常抓包及使用所有匹配模式,否则只能用域名匹配

    whistle的匹配模式(pattern)大体可以分为域名、路径、正则、精确匹配、通配符匹配。其中 正则匹配、精确匹配,通配符匹配支持取非,即 !pattern ,表示不匹配。 pattern 关键字符:^(通配路径表示符)、$(精确匹配)、*(通配符)、!(取非)

    域名匹配:

    域名匹配,不仅支持匹配某个域名,也可以限定端口号、协议(http、https、ws、wss、tunnel),如果 operatorURI 不为请求路径, pattern 和 operatorURI 位置可以调换;

    # 匹配域名www.test.com下的所有请求,包括http、https、ws、wss,tunnel
    www.test.com operatorURI
    
    # 匹配域名www.test.com下的所有http请求
    http://www.test.com operatorURI
    
    # 匹配域名www.test.com下的所有https请求
    https://www.test.com operatorURI
    
    # 上述匹配也可以限定域名的端口号
    www.test.com:8888 operatorURI # 8888端口
    www.test.com/ operatorURI # http为80端口,其它443端口

      其中, tunnel 为 Tunnel代理请求的协议, tunnel协议的 url 只有域名没有路径

    路径匹配

    指定匹配某个路径,也可以限定端口号、协议(http、https、ws、wss)等等, 如果operatorURI不为请求路径, pattern 和 operatorURI 位置可以调换

    # 限定请求协议,只能匹配http请求
    http://www.test.com/xxx operatorURI
    http://www.test.com:8080/xxx operatorURI
    
    # 匹配指定路径下的所有请求
    www.test.com/xxx operatorURI
    www.test.com:8080/xxx operatorURI

       */xxx  operatorURI #使用了通配符匹配特性

    正则匹配

    正则的语法及写法跟js的正则表达式一致,支持两种模式: /reg/、、/reg/i 忽略大小写,支持子匹配,可以通过正则的子匹配把请求url里面的部分字符串传给 operatorURI, pattern 和 operatorURI 可以调换

    #匹配所有请求
    * operatorURI
    
    #匹配 url 里面包含某个关键字的请求,且忽略大小写
    /keyword/i operatorURI
    
    # 利用子匹配把url里面的参数带到匹配的操作uri
    # 下面正则将把请求里面的文件名称,带到匹配的操作uri
    # 最多支持10个子匹配 $0...9,其中$0表示整个请求url,其它跟正则的子匹配一样
    
    /[^?#]\/([^\/]+)\.html/ protocol://...$1...

    精确匹配

    与上面的路径匹配不同,路径匹配不仅匹配对应的路径,而且还会匹配该路径下的子路径,而精确匹配只能指定的路径,只要在路径前面加$ 即可变成精确匹配,类似 $url operatorURI,pattern和operatorURI位置可以调换。

    • 包含请求协议

        $http://www.test.com operatorURI
        $https://www.test.com/xxx? operatorURI
      

      这种情况分别只能匹配这两种请求:

        http://www.test.com # 浏览器会自动改为http://www.test.com/
        https://www.test.com/xxx?
      
    • 不包含请求协议

        $www.test.com/xxx operatorURI
      

      这种情况可以匹配如下四种请求:

        http://www.test.com/xxx
        https://www.test.com/xxx
        ws://www.test.com/xxx
        wss://www.test.com/xxx
      

      精确匹配支持非匹配 !$url

    通配符匹配

    域名、路径匹配不能满足一些复杂的情况,虽然正则匹配可以解决所有匹配问题,但是门槛有点高,且涉及转义及设置匹配的起始位置等,对一些常用whistle提供了一些更简单的配置方式,包含通配符匹配,通配域名匹配、通配路径匹配:

    通配符匹配:

    匹配模式必须以 ^开头,如果需要限制结束位置可以用 $, *为通配符,支持通过$0…9获取通配符匹配的字符串,其中$0表示整个请求的url

     # 以 ^ 开头
     ^www.example.com/test/*** referer://http://www.test.com/$1
    
     # 限定结束位置
     ^www.example.com/test/***test$ referer://http://www.test.com/$1

    ...

  • 相关阅读:
    最新的Zynq资料整理
    异步FIFO的FPGA实现
    Mac 下安装PHP遇到的问题
    php 实现推技术comet(转)
    高性能分布式内存队列系统beanstalkd(转)
    应对Memcached缓存失效,导致高并发查询DB的四种思路(l转)
    memcache 缓存失效问题(转)
    PHP.ini文件读取不到
    PHP5中魔术方法
    python mysql 单引号字符串过滤
  • 原文地址:https://www.cnblogs.com/zhishiyv/p/16393390.html
Copyright © 2020-2023  润新知