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()
最佳答案
查看http://findproxyforurl.com/pac-functions/中的定义,它们具有完全不同的功能。 dnsDomainIs()使用完全相同的域名,例如.google.com
,而shExpMatch()使用类似 shell 的字符串以及通配符(例如*.google.com
)。
它们现在看起来非常不同,但是使用shExpMatch,您还可以匹配文件夹结构(如example.com/sub/folder/*
或http://example.com/img/*.png
)中的项目。
第一个仅匹配主机名,不带协议(protocol),端口或子文件夹,而第二个匹配整个URL。但是,您可以像dnsDomainIs()一样使用shExpMatch(),但是我不确定,如果您可能会受到攻击,则可以通过无意中将google.com.example.com
之类的URL用作google.com
-dnsDomainIs()在此处会返回false,shExpMatch()可能返回true(未经测试,只是预感)