URL patterns¶
Creating a Watcher consists of providing a series of URLs that are part of the application you want to monitor.
The URLs should comply with the following format: <scheme>://<host>[:port][</path>]
.
Scheme¶
It must be one of those values: “http”, “https”, “ws”, “wss” or wildcard(*) to target all schemes.
Host¶
It may subsequently contain any combination of ascii(7) letters (from a to z or uppercase), digits, hyphen(-), dot(.) or wildcard(*). IPv6 is also supported. In this case, the IP address should be embraced with brackets (e.g. : [fe80::7d15:f81e:c9c7:d2d9]).
Port¶
This field is optional. If it is undefined, it matches standard ports (http:80, https:443, ws:80 and wss:443).
If defined, it must start with a :
, contain a number or a wildard(*
) and shouldn’t be empty.
Path¶
This field is optional. If it is empty or undefined, then it is considered as a wildcard.
It must start with a /
. It may then subsequently contain any combination of the wildcard(*
) and any of the characters that are allowed in URL paths (no ?
or #
). Multiple consecutives /
will be simplified to one.
The value for the path matches against the string which is the URL path without the URL query string (?
) or even fragments (#
).
Notes¶
Literal *
in path is not supported and will be treated as a wildcard(*
).
Pattern only supports ascii(7), i.e. word puny codes should be used for UTF8 characters.
For example, www.café.fr/*
is not supported and must be replaced by www.xn--caf--dma.fr/*
.
The interpretation of the encoded URL (based on %
) is product related. Hence any encoded URL will be treated as a regular string and no decoding will be made.
For example, https://contoso.com/test/*
will not match https://contoso.com/t%65st
.
Examples of URL patterns¶
URL Pattern | Examples of matches | Examples of non-matches |
---|---|---|
*://*:* *://*:*/* |
http://kadiska.com:9888 https://kadiska.com/foo ws://contoso.com:9777/foo wss://contoso.com:8080/foo?a=5#tag |
file://contoso.com ftp://contoso.com |
*://* *://*/* |
http://kadiska.com http://kadiska.com:80 http://kadiska.com:80/foo http://kadiska.com/foo?a=5#tag https://kadiska.com https://kadiska.com:443 https://kadiska.com:443/foo https://kadiska.com/foo?a=5#tag wss://contoso.com wss://contoso.com:443/ wss://contoso.com:443/foo wss://contoso.com/foo?a=5#tag |
http://kadiska.com:443 https://kadiska.com:80 wss://contoso.com:8080/foo |
*://contoso.com:80/path |
http://contoso.com/path http://contoso.com:80/path https://contoso.com:80/path |
http://contoso.com:443/path https://contoso.com/path |
*://contoso.com *://contoso.com/ *://contoso.com/* |
http://contoso.com http://contoso.com/ https://contoso.com/foo https://contoso.com/foo?a=5#tag |
http://other.com http://contoso.com:8080 https://contoso.com:80 |
*://192.168.0.1:* |
http://192.168.0.1/foo?a=5#tag http://192.168.0.1:798/foo?a=5#tag |
http://192.168.0.2/foo?a=5#tag |
*://[fe80::7d15:f81e:c9c7:d2d9] |
http://[fe80::7d15:f81e:c9c7:d2d9]/foo?a=5#tag http://[fe80::7d15:f81e:c9c7:d2d9]:80/foo?a=5#tag |
http://[fe81::7d15:f81e:c9c7:d2d9] |
*://*contoso* *://*contoso*/ *://*contoso*/* |
http://contoso.com/foo http://contoso.mail.com/foo https://acontosoy.com/foo |
http://contosi.com |
*://*.contoso.* |
http://mail.contoso.com/foo https://smtp.contoso.other.com/foo |
http://contoso.com |
https://*/path |
https://contoso.com/path https://a.contoso.com/path https://other.com/path https://mozilla.com/path?foo=1 |
http://contoso.com/path https://contoso.com/path/ https://contoso.com/a https://contoso.com/ |
https://*/path/ |
https://contoso.com/path/ https://a.contoso.com/path/ https://something.com/path/ https://contoso.com/path/?foo=1 |
http://contoso.com/path/ https://contoso.com/path https://contoso.com/a https://contoso.com/ |
https://bar/test/foo |
https://bar/test/foo https://bar///test////foo |
https://bar/t%65st/foo https://bar///t%65st///foo |
https://bar/t%65st/foo |
https://bar/t%65st/foo https://bar///t%65st///foo |
https://bar/test/foo https://bar///test////foo |
´https://hh//b//` | https://hh/a/b/c/ https://hh/d/b/f/ https://hh/a/b/c/d/ https://hh/a/b/c/d/#section1 https://hh/a/b/c/d/?foo=/ https://hh/a/b/c/d/?foo=bar |
https://hh/b/c/ https://hh/a/b/ https://hh/a?foo=21314&bar=/b/&extra=c/ |