chrome dns 本地解析 ¶
#dns劫持
在进行某些自动化测试时,我们可能需要控制dns的解析结果,最直接的方案是用 host文件,但需要root权限,但 chrome 可以通过命令行参数将解析结果预置到浏览器里面。
chrome --host-resolver-rules="MAP *.mno.com 1.2.3.4" --user-data-dir=$(mktemp -d)
其中 1.2.3.4 为反向代理的地址,在上面设置好代理资源就可以正常访问了。
Chrome 的 --host-resolver-rules 支持指定多个规则,这些规则之间通过 英文逗号(,) 分隔,且全部写在同一个双引号内。
-
语法格式
每个规则由 指令 模式 目标 组成,多个规则串联即可:--host-resolver-rules="MAP host1 target1, MAP host2 target2, EXCLUDE host3" -
常用组合示例
在自动化测试(Code Agent)场景中,你可能需要同时映射多个域名,并排除本地环回地址:
-
映射多个域名到同一个 IP:
--host-resolver-rules="MAP test.com 127.0.0.1, MAP api.test.com 127.0.0.1" -
通配符映射 + 特定排除(防止本地服务受干扰):
--host-resolver-rules="MAP *.example.com 1.2.3.4, EXCLUDE localhost, EXCLUDE 127.0.0.1" -
映射到特定端口:
--host-resolver-rules="MAP example.com 127.0.0.1:8080"
- 注意事项
- 引号处理:在命令行或脚本中,务必确保整个规则链条被包裹在一对双引号中。
- 优先级:规则按从左到右的顺序匹配。一旦匹配到第一条适用的规则,后续规则将不再对该请求生效。
- 生效范围:此参数仅对当前启动的 Chrome 实例有效。如果已有 Chrome 进程在运行,建议配合
--user-data-dir=$(mktemp -d)使用,以确保启动一个全新的、应用了规则的独立环境。 - 调试方法:启动后,你可以在 Chrome 地址栏输入
chrome://net-internals/#dns,查看当前的“Internal DNS cache”和“Host resolver rules”是否已生效。
注 CURL命令也有个类似效果的参数
curl --resolve example.com:80:127.0.0.1 http://example.com
另外正向代理通常不需要专门劫持dns
评论
请登录后发表评论。
暂无评论。成为第一个评论者!