遇到的问题
使用charles或者findder抓包,配合客户端调试接口请求时, 常用的使用方式是:
手机客户端设置 wifi代理到 个人电脑—–>个人电脑打开charles—-> 设置本机为内网host—> 抓包查看。
手机上的全部请求都会通过代理,请求到个人电脑上。 像虎扑,或者下厨房等应用, 检测到使用代理后,应用提示网络报错。
所以我们核心问题是: 怎么才能只代理 我们自己的域名请求,而不影响其他应用请求。
使用pac
我们使用酸酸乳时, 会看到一个选项是「PAC自动模式」,这就是我们要用的pac模式。
摘要自 维基百科:
一个PAC文件包含一个JavaScript形式的函数“FindProxyForURL(url, host)”。这个函数返回一个包含一个或多个访问规则的字符串。用户代理根据这些规则适用一个特定的代理器或者直接访问。当一个代理服务器无法响应的时候,多个访问规则提供了其他的后备访问方法。浏览器在访问其他页面以前,首先访问这个PAC文件。PAC文件中的URL可能是手工配置的,也可能是是通过网页的网络代理自动发现协议(WPAD)自动配置的。
所以我们只需要定义PAC文件,指定如果域名是 xxx.com , 就走代理,其他是直接请求。
所以我们定义自己的pac文件即可
1 |
|
命名为 xxx.pac.js, 上传到我们自己的服务器上。 比如地址是
1 |
|
客户端设置网络为 PAC代理方式。
正常上网即可。
参考文章
- https://gist.github.com/sheng168/6f5e32825f68e1a326eb61ce73df8a47
- https://github.com/petronny/gfwlist2pac/blob/master/gfwlist.pac
- https://www.barretlee.com/blog/2016/08/25/pac-file/