基于Clash Parsers规则预处理绕过Bing地区审核
痛点 💡
用户在使用Clash的“edit”或”edit externally”自行编辑规则后,每次自动更新订阅都会导致规则被覆写,如果用户配置了代理domain-suffix为bing.com的规则,也会被直接覆写,导致用户可能每天都要重新配置一次才可以访问指定服务。
之前博主尝试过修改UA头中的X-Forwarded-For
字段实现绕过Bing地区限制,但最终没有成功实现。
这个原理是通过XFF伪造源地址为美国的家宽地址,以此尝试绕过Bing的地区限制。
知识扩展
顺便来了解一下HTTP请求头中的“Remote_Addr,X-Forwarded-For,X-Real-IP”分别是什么
Remote_Addr
代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的。
X-Forwarded-For
X-Forwarded-For
请求标头是一个事实上的用于标识通过代理服务器连接到 web 服务器的客户端的原始 IP 地址的标头。
语法:
X-Forwarded-For: <client>, <proxy1>, <proxy2>
<client>
客户端的 IP 地址。
<proxy1>, <proxy2>
如果请求经过多个代理服务器,每个代理服务器的 IP 地址会依次出现在列表中。这意味着,如果客户端和代理服务器行为良好,最右边的 IP 地址会是最近的代理服务器的 IP 地址,最左边的 IP 地址会是原始客户端的 IP 地址。
例如 >> X-Forwarded-For: 1.1.1.1, 2.2.2.2, 3.3.3.3
意思是请求由
1.1.1.1
发出,经过三层代理,第一层是2.2.2.2
,第二层是3.3.3.3
,而本次请求的来源IP4.4.4.4
是第三层代理
这个参数具有可篡改性,通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库或某文件,所以可以通过篡改XFF头实现伪造IP地址,实现HTTP头注入攻击。
X-Real-IP
多代理场景时在第一个反向代理上配置“proxy_set_header X-Real-IP $remote_addr
” 获取真实客户端IP
开始配置
Clash版本要求
0.10.1 版本更新后,支持使用 JavaScript 对下载后的配置文件进行预处理
0.11.10 版本更新后,支持使用 YAML 对下载后配置文件进行简单预处理
YAML配置
由于YAML方案相对简单,所以我这边介绍YAML配置方案。如果需要对下载地址为https://example.com/profile.yaml
的配置文件进行预处理,操作如下:
选择图中的“Parsers”
parsers:
- url: https://example.com/profile.yaml;
yaml:
prepend-rules:
- DOMAIN-SUFFIX,bing.com,OpenAI
# rules最前面增加一个规则 我这边之前定义过OpenAI这个服务,你们可能是“Proxies”
或采用正则匹配方式(建议采用上面的方式)
parsers:
- reg: ^https://www.bing\\.com/.+$ # 正则匹配域名
yaml:
prepend-rules:
- DOMAIN,bing.com,OpenAI
当配置文件触发刷新(包括自动更新)时,会读取yaml
字段定义的值,将对应值插入/合并到原配置文件中。其中对于prepend-rules
的相关关键配置解释如下:
关键字 | 值类型 | 操作 |
---|---|---|
append-rules | 数组 | 数组合并至原配置rules数组后 |
prepend-rules | 数组 | 数组合并至原配置rules数组前 |
append-proxies | 数组 | 数组合并至原配置proxies数组后 |
prepend-proxies | 数组 | 数组合并至原配置proxies数组前 |
append-proxy-groups | 数组 | 数组合并至原配置proxy-groups数组后 |
prepend-proxy-groups | 数组 | 数组合并至原配置proxy-groups数组前 |
mix-proxy-providers | 对象 | 对象合并至原配置proxy-providers中 |
mix-rule-providers | 对象 | 对象合并至原配置rule-providers中 |
mix-object | 对象 | 对象合并至原配置最外层中 |
commands | 数组 | 在上面操作完成后执行简单命令操作配置文件 |
以下是对于“OpenAI”参数的相关解释
DIRECT: 直连
REJECT: 该规则下不走网络活动,常用于广告拦截
Proxies: 走代理访问
实现图
如果依旧无法访问,可以尝试清空cookie,并将微软账户设置为美国等其他可用的国家,因为Bing也有根据Cookie来判断访客所属国家。
免责声明
如果您下载、安装、使用、修改本程序及相关代码,即表明您信任本程序。在使用本程序时造成对您自己或他人任何形式的损失和伤害,本人不承担任何责任。如您在使用本程序的过程中存在任何非法行为,您需自行承担相应后果,本人将不承担任何法律及连带责任。请您务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款,并选择接受或不接受。除非您已阅读并接受本协议所有条款,否则您无权下载、安装或使用本程序。您的下载、安装、使用等行为即视为您已阅读并同意上述协议的约束。Use at Your own risk.