8

shExpMatch()和有什么区别dnsDomainIs()

定义说:

// dnsDomainIs()
// Evaluates hostnames and returns true if hostnames match. Used mainly to match and exception individual host names.

// Example:
if (dnsDomainIs(host, ".google.com")) return "DIRECT";



// shExpMatch()
// Attempts to match hostname or URL to a specified shell expression and returns true if matched.

// Example:
if (shExpMatch(url, "*vpn.domain.com*") ||
      shExpMatch(url, "*abcdomain.com/folder/*"))
  return "DIRECT";

如果我理解正确那么

shExpMatch()- 可以使用一些通配符

dnsDomainIs()- 可以使用确切的名称

只是shExpMatch()优于dnsDomainIs()

4

2 回答 2

5

查看来自http://findproxyforurl.com/pac-functions/的定义,它们具有非常不同的功能。dnsDomainIs() 使用精确的域名 - 例如.google.com,而 shExpMatch() 使用带有通配符的类似 shell 的字符串,例如*.google.com.

它们现在看起来非常不同,但是使用 shExpMatch,您还可以匹配文件夹结构中的项目,例如example.com/sub/folder/*http://example.com/img/*.png

第一个只匹配没有协议、端口或子文件夹的主机名,而第二个匹配整个 URL。但是,您也许可以像 dnsDomainIs() 一样使用 shExpMatch(),但我不确定,如果您可能容易受到攻击,那么通过无意中允许类似google.com.example.comfor的 URL google.com- dnsDomainIs() 会在此处返回 false,shExpMatch() 可能会返回 true (未测试,只是预感)

于 2015-03-06T13:35:59.820 回答
-2

请注意 Firefox 52.0 中的以下内容...

dnsDomainIs("www.notmycompany.com", "mycompany.com") 返回真 dnsDomainIs("www.myCompany.com", "mycompany.com") 返回假

于 2017-03-10T02:32:16.567 回答