在iOS上安装根证书时,需要先关闭https拦截,否则将显示安装失败
如果安装好根证书后,在APP或某些版本的Chrome上无法访问(如出现:
ERR_SSL_SERVER_CERT_BAD_FORMAT
(#44) 或ERR_CERT_COMMON_NAME_INVALID
),确保本地安装的Node版本>=v6
,并更新whistle到最新版本,用w2 restart -A
重启whistle,让whistle会生成新的根证书,用户再安装下根证书即可
Node某些版本有bug(如:Node v7.10.0),可能会导致whistle异常退出,出现这种情况可以更新下Node,详见: #48
whistle是跨平台的web调试代理工具,功能类似Windows平台上的Fiddler,主要用于查看或修改HTTP、HTTPS、Websocket的请求或响应或作为HTTP代理服务器,不同于Fiddler通过断点修改请求响应的方式,whistle采用的是类似配置系统hosts的方式,通过配置规则修改请求响应,并支持规则分组及通过域名、路径、正则、精确匹配(精确匹配需v1.1.2及以上版本才支持,老版本可以用正则实现)四种匹配方式(系统的hosts配置只支持域名匹配),特别针对终端调试提供了weinre,log等功能,且支持通过Node模块扩展功能,具体实现过程请参见whistle帮助文档。
安装使用whistle请参见whistle帮助文档。
完整功能请参见whistle帮助文档。
传统hosts的配置模式:
# 单个host
ip hostname
# 组合host
ip hostname1 hostname2 ... hostnameN
# 例如
127.0.0.1 www.example.com
127.0.0.1 a.example.com b.example.com c.example.com
whistle的配置模式:
# 单个操作
pattern operator-uri
# 如果pattern和operator-uri不同时为域名或路径的一种组合,位置可以调换
operator-uri pattern
# 组合模式
pattern operator-uri1 operator-uri2 ... operator-uriN
# pattern1和operator-uri不同时为域名或路径的一种组合,可以如下配置
operator-uri pattern1 pattern2 ... patternN
其中,pattern可以为:
- 域名:
www.test.com
(所有该域名下的请求都会匹配operator-uri
) - 路径:
http://www.test.com/xxx
(http://www.test.com/xxx
及其子路径的请求都会匹配operator-uri
),或不加协议protocol://www.test.com/xxx
,protocol可以为http、https、ws、wss(http://www.test.com/xxx
及其子路径的请求都会匹配operator-uri
) - 正则:
/^https?:\/\/([^\/]+)\/xxx/
(http(s)://host:port/xxx
及其子路径的请求都会匹配operator-uri
,且在operator-uri
中可以通过$1, $2, ..., $9
获取url
里面的子匹配) - 精确:在原来路径前面加精确匹配符
$
,即:$url
(可以带协议$http://www.test.com/xxx
,也可以不带协议$www.test.com
)
operator-uri由上述基本功能抽象成的形如protocol://ruleValue
的URI,whistle会根据匹配到的operator-uri的protocol
及ruleValue
修改请求或响应,具体实现过程请参见whistle帮助文档。
例如: # 修改www.example.com的响应cors www.example.com resCors://* # 或 resCors://* www.example.com
# 同时修改多个自定域名或路径
resCors://* /example\.com/ a.test.com b.test.com
# 修改www.test.com的带端口host、referer和响应的cors
www.test.com 127.0.0.1:8080 referer://http://www.example.com resCors://*
完整功能参见whistle帮助文档。
完整功能请参见whistle帮助文档。