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()は、*.google.com
などのワイルドカードを含むシェルのような文字列を使用します。
現在は非常に異なって見えますが、shExpMatchを使用すると、example.com/sub/folder/*
やhttp://example.com/img/*.png
などのフォルダー構造内のアイテムを照合することもできます。
最初のものはプロトコル、ポート、またはサブフォルダーなしでホスト名にのみ一致し、2番目のものはURL全体に一致します。ただし、dnsDomainIs()のようにshExpMatch()を使用できる場合もありますが、脆弱である可能性がある場合は、google.com.example.com
のようなURLを誤って許可することによってgoogle.com
--dnsDomainIs()が使用されるかどうかはわかりません。ここでfalseを返すと、shExpMatch()はtrueを返す可能性があります(テストされていません。ただの予感です)