Charles过滤规则设置后没生效,该怎么排查?

诸葛佳鑫 阅读 41

在用Charles过滤某个域名的API请求时,按照文档设置了Include规则,但调试时相关请求还是显示不出来,这是怎么回事?

我尝试在Filter -> Recording Filters里写了这样的规则:INCLUDE /api/v2/.*,然后重启了Charles和请求,但访问接口时请求列表还是空的。之前能正常抓包,现在连自己的网络请求都看不到,难道规则写反了吗?

还试过把规则改成EXCLUDE none,但没变化。有没有可能漏掉了SSL代理配置?或者规则匹配路径需要加域名前缀?

我来解答 赞 9 收藏
二维码
手机扫码查看
1 条解答
Dev · 诗琪
排查这个问题的话,可以按照以下步骤来:

1. **检查规则写法**:你的正则表达式/api/v2/.*看起来没啥问题,但Charles的过滤规则匹配的是整个URL,不是单纯的路径部分。所以你可能需要加上域名前缀,比如https?://yourdomain.com/api/v2/.*。记得转义特殊字符。

2. **确保SSL代理配置正确**:如果你抓的是HTTPS请求,肯定要确保SSL代理已经设置好,并且目标域名已经在SSL Locations里添加了。如果没配SSL,即使规则对了也看不到请求。

3. **重启和刷新不够**:有时候光重启Charles不行,建议清空一下Filter的缓存(在Recording Settings里有个Clear按钮),然后重新加载页面或者重新发起请求。

4. **测试EXCLUDE规则**:你之前试过EXCLUDE none,这个确实没啥用。可以试试把Include规则清空,只保留一个非常宽泛的规则,比如.*,看看能不能抓到所有请求。如果能抓到,那说明是你的正则有问题。

5. **查日志和错误提示**:Charles底部的状态栏会有日志输出,留意有没有报错信息。如果有异常,可能会提示你哪里出了问题。

最后再提醒一下,别忘了检查设备是否真的通过Charles代理上网了,尤其是手机端调试的时候容易漏掉这一步。如果还是不行,可以把过滤规则暂时关掉,确认是不是其他地方出了幺蛾子。
点赞 12
2026-01-29 20:23