Surge 使用手册
  • 简介
  • 总览
    • 组件
    • 配置文件
  • 代理规则
    • 域名规则
    • IP 地址规则
    • HTTP 规则
    • 进程规则
    • 逻辑规则
    • 杂项规则
    • 规则集
    • Final 规则
  • 策略
    • 代理策略
    • 内置策略
    • 策略组
  • DNS
    • DNS 服务器
    • 本地 DNS 映射
  • HTTP 处理
    • HTTPS 解密
    • 重写 URL
    • 重写请求头
  • 脚本
    • 基础
    • HTTP 请求
    • HTTP 响应
    • 脚本规则
    • 事件
    • DNS
    • 计划任务
  • 其他
    • 杂项
    • 托管配置
    • 增强模式
    • 网关模式
    • SSID 挂起
    • URL Scheme
    • Snell 服务端
    • 模块
    • DNS over HTTPS
    • HTTP API
  • 更新日志
    • Surge Mac
由 GitBook 提供支持
在本页

这有帮助吗?

导出为 PDF
  1. 脚本

DNS

使用脚本去执行 DNS 解析操作,该类型下第二参数为脚本名。

script = type=dns,script-path=dns.js,debug=true

之后需要在 [Host] 中对相应域名进行配置。

[Host]
baidu.com = script:dnspod
*.baidu.com = script:dnspod

传入参数为 $domain,当前查询的域名。

返回结果可为下列中的任意一个:

  • 当返回 address<String> 时,直接使用该 IP 地址为结果,必须是一个有效的 IPv4 或者 IPv6 地址的字符串表示。

  • 当返回 addresses<Array> 时,使用多个IP地址作为结果。

  • 当返回 server<String> 时,表示应交给特定的 DNS 服务器进行查询。

  • 当返回 servesr<Array> 时,表示指定多个上游 DNS 服务器进行查询。

当返回 address<String> 或者 addresses<Array> 时,可以额外返回 TTL 字段,将本次的结果记入 DNS 缓存避免重复查询,单位为秒。

以下样例使用了 DNSPod 的公开 HTTP DNS API,通过脚本扩展的方式让 Surge 可以随意支持各种协议的 DNS 查询

$httpClient.get('http://119.29.29.29/d?dn=' + $domain, function(error, response, data){
  if (error) {
    $done({}); // Fallback to standard DND query
  } else {
$done({addresses: data.split(';'), ttl: 600});
  }
});
上一页事件下一页计划任务

最后更新于4年前

这有帮助吗?