URLパターンはNetskope DEMブラウザ拡張機能にどのウェブアプリケーションを監視すべきかを指示します。正しく設定することが最も重要なセットアップステップであり、なぜデータが表示されないのかの最もよくある理由です。 質問。このガイドでは、パターンの仕組み、正確な構文、実際のSPAやMPAの例、そしてあらゆるコーナーケースについて解説しています。
Read this first — the one concept that prevents most mistakes: URLパターンがページ(トップレベルナビゲーション)と一致します。ページが監視されると、拡張機能はそのページが読み込むすべてのものを自動的にキャプチャします。すべての API 呼び出し、すべてのリソース (JS、CSS、画像、フォント)、およびCDN や Amazon S3 などのクラウドストレージから提供されるアセットを含むすべてのクロスオリジンリクエストが含まれます。パターンにはCDN、API、ストレージホストを記載する必要はありません。アプリのページを記載するだけで、トラフィックは自動的に追跡されます。
キャプチャの実際の仕組み
設定には2つの段階があり、それらを混同することがほとんどの設定ミスの原因となっています。
Stage 1: Patterns select the Page
タブが新しいドキュメントに移動すると、拡張機能はページのURLをアプリのurlPatterns(およびurlExclusions)と照合します。パターンが一致すれば、そのページの監視を開始する。
ステージ2:ページのトラフィックはすべて自動的にキャプチャされます
ページが監視された後、拡張機能は(ブラウザのW3CリソースタイミングAPIを介して) everyリクエストを記録します。
- ページナビゲーション自体
- すべてのリソース: JavaScript、CSS、画像、フォント、メディア
- すべてのAPI呼び出し:
fetch、XMLHttpRequest、beacon - ホストがどこであっても:オリジンサーバー、CDN、APIサブドメイン、サードパーティ、またはAmazon S3/Azure Blobストレージ
トラフィックを削減できるのは、あなたのurlExclusionsと、 http(s)以外のリクエストを無視する組み込みフィルターだけです。
Takeaway: ユーザーがアクセスするページに対してパターンを設定してください。ページが読み込むアセットに対しては設定しないでください。もしUIがhttps://app.contoso.com/*に位置し、api.contoso.comからデータを取得し、S3からファイルを取得しているなら、単一のパターンhttps://app.contoso.com/*3つすべてをキャプチャします。
When do you need a pattern for another host? そのホストが独自のトップレベルページとして開かれた場合のみ、例えば、独自のタブで開くファイル、監視したい別のドメインの認証ページ、または別のドメインの独立したサブアプリとして開かれた場合に限ります。
パターンフォーマット
<scheme>://<host>[:port][/path]
Scheme
http 、 https 、 ws 、 wss 、または*のいずれか。
*4つのうちいずれかに一致する。- この方式では、デフォルトのポート番号が決定されます。
- Practical guidance: 使う
https、またはスキームに依存しないと考え*。ws/wssは受け入れられますが、WebSocket トラフィックは記録されません (RUM は HTTP ベースです)。
Host
大文字と小文字を区別しません。ASCII文字、数字、ハイフン、ドット、およびワイルドカード* 。IPv6 は括弧で囲まれてサポートされます。例: [fe80::7d15:f81e:c9c7:d2d9] 。
*ドットを含む任意の文字の連続に一致します:
*.contoso.comはmail.contoso.comとa.b.contoso.comに一致します。- ⚠️
*.contoso.comnot頂点contoso.comと一致しますか。contoso.comも追加してください。 - ワイルドカード以外のホストは完全に一致します。つまり、
contoso.comはそのサブドメインではありません。
ポート
- Omitted: URLはスキームの標準ポート(
http/wsは80、https/wssは443)でなければなりません。 ポートが指定されていないパターンは、 not非標準ポートに一致します。 :*→ 任意の港。:<number>→ まさにその港。
Path
- Omitted/empty → すべてのパスに一致します(
/*と同じ)。 - 始める with
/;*を含む場合があります;も?も#もありません。 - Matching is exact — a full match of the whole path, not a prefix.
/path/pathのみに一致し、/path/または/path/xには一致しません。使う*延長する。 - 連続するスラッシュは 1 つに縮退します (
/a///b→/a/b)。 - URL パスのみと照合されます。クエリ (
?…) とフラグメント (#…) は最初に削除されます。
パターンでは許可されていません
- Query strings.
?を含むパターンは拒否されます。(マッチングではURLのクエリは無視されるため、…/file?X-Amz-Signature=…ような署名付きS3 URLはパスに基づいてマッチングされます。) - A literal
*.*常に予測不能な要素となる。 - Non‑ASCII. 使う IDNのpunycode:
www.café.fr→www.xn--caf-dma.fr(通常のハイフン-)。 - No percent‑decoding.
https://contoso.com/test/*notはhttps://contoso.com/t%65st一致しますか。
ゴールデンルール トップ失敗
| Number | Rule | Wrong | Right |
|---|---|---|---|
| 1 | To capture a whole app, don’t pin a path (パスの一致は完全一致です。) | https://app.contoso.com/home | https://app.contoso.com/* |
| 2 | Match a path prefix with *. | https://app.contoso.com/portal | https://app.contoso.com/portal/* ( /portal/下)または…/portal* (また/portalXも) |
| 3 | Cover apex and subdomains. | https://*.contoso.com/* alone | https://contoso.com/* and https://*.contoso.com/* |
| 4 | Allow any port if the app uses one. | https://app.contoso.com/* (ミス:8443 ) | https://app.contoso.com:*/* |
| 5 | List pages, not assets. | キャプチャアセットに*.cloudfront.net 、 *.s3.amazonaws.comを追加 | 単にhttps://app.contoso.com/* — 自動的に取得されたアセット |
| 6 | Don’t over‑match. | https://*/dashboard (インターネット上のすべてのホスト) | https://app.contoso.com/dashboard* |
実例
ここに4種類の実例があります:シングルページアプリケーション、マルチページアプリケーション、使うAWS S3(または他のクラウドストレージ)を使うアプリ、そして典型的な社内アプリです。
シングルページアプリケーション(SPA)
SPAは一度ロードされると、クライアントサイドルーティングを介してビューが切り替わります(完全なナビゲーションなしでパスまたは#fragmentが変更されます)。拡張機能は最初のナビゲーションに一致するため、アプリ内のルートではなくホストに一致します。また、 #fragmentルートをターゲットにすることはできません。アプリのAPI呼び出しとCDN/ストレージアセットは自動的に取得されます。
| 応用 | 推奨パターン | 注記 |
|---|---|---|
| Microsoft SharePoint Online | https://contoso.sharepoint.com/* | OneDrive https://contoso-my.sharepoint.com/*を追加します。*.sharepointonline.com 、 *.office.net 、Akamai、Azure Blob からのアセットは自動的に取得されます。 |
| Salesforce (Lightning) | https://*.lightning.force.com/*https://*.my.salesforce.com/* | UIとAPIは両方のホストにまたがるため、両方を含める。 |
| Google Workspace(Gmail/ドキュメント) | https://mail.google.com/*https://docs.google.com/* | ハッシュルーティング( #inbox )はパターンからは見えず、設定も不要です。 |
| Atlassian Jira/Confluence Cloud | https://contoso.atlassian.net/* | シングルテナントホスト。APIは同じホスト + *.atlassian.com個のアセット。 |
| ServiceNow | https://contoso.service-now.com/* | SPAスタイルのnow/nav/…ルーティング。ホストパターンでカバーされます。 |
複数ページアプリケーション(MPA)
MPAはほとんどのアクションにおいて実際のナビゲーションを実行し、多数の異なるページURLを読み込みます。各ナビゲーションは再チェックされるため、単一のホストレベルの/*でそれらをカバーします。アプリが複数のサブドメイン/ポートにまたがる場合は、サブドメイン/ポートのワイルドカードを追加してください。
| シナリオ | おすすめの型紙 | 注記 |
|---|---|---|
| クラシックアプリ、複数のパス、1つのホスト | https://portal.contoso.com/* | すべてのページ ( /login 、 /reports/2024 、 /admin/users …) をキャプチャします。 |
| サブドメイン全体にわたるアプリ | https://*.contoso.com/* + https://contoso.com/* | Covers app., auth., reports. and the apex. |
| ワークデイ | https://*.myworkday.com/* | Pod ホストは異なります ( wd2 、 wd5 …)。サブドメインのワイルドカードが最も安全です。 |
| Non‑standard port | https://app.contoso.com:*/* | 例えば、:8443 。 |
使うAmazon S3(または他のクラウドストレージ)を使えるアプリ
S3パターンが必要になることはほとんどありません。2つのケース:
- S3 as backend storage for assets/uploads/downloads loaded by your pages → no pattern needed : 監視対象ページのリソース/APIとしてキャプチャされました。署名付きURLは問題なく一致します(クエリは無視されます)。
- S3 objects opened directly as their own tab: 使うするURLスタイルに合ったパターンを追加:
https://*.s3.amazonaws.com/* https://s3.amazonaws.com/* https://*.s3.*.amazonaws.com/* # regional, e.g. bucket.s3.us-east-2.amazonaws.com
典型的な社内アプリ
UIはhttps://app.contoso.com 、REST APIはhttps://api.contoso.com 、ファイルはS3に保存、HTTPSのみ:
https://app.contoso.com/*
それでおしまい。api.contoso.com呼び出しと S3 の読み込みは、監視対象ページでby行われるため、自動的にキャプチャされます。ユーザーがバケット URL を独立したタブとして開く場合にのみ S3 パターンを追加し、ユーザーが API ホストを直接開く場合にのみhttps://api.contoso.com/*を追加します。
パターンマッチングの例
拡張機能のマッチングエンジンに対して検証済み。各行には、複数の同等のパターンが記載されている場合があります。
| URLパターン | 試合例 | 一致しない例 |
|---|---|---|
*://*:**://*:*/* | http://netskope.com:9888https://netskope.com/foo | file://contoso.comftp://contoso.com |
*://**://*/* | http://netskope.comhttp://netskope.com:80/foohttp://netskope.com/foo?a=5#taghttps://netskope.com:443/foo | http://netskope.com:443 (non‑std for http)https://netskope.com:80 (non‑std for https)wss://contoso.com:8080/foo (non‑default port) |
*://contoso.com:80/path | http://contoso.com/pathhttp://contoso.com:80/pathhttps://contoso.com:80/path | http://contoso.com:443/pathhttps://contoso.com/path (:443 ≠ :80) |
*://contoso.com*://contoso.com/*://contoso.com/* | http://contoso.comhttps://contoso.com/foohttps://contoso.com/foo?a=5#tag | http://other.comhttp://contoso.com:8080https://contoso.com:80 |
*://192.168.0.1:* | http://192.168.0.1/foo?a=5#taghttp://192.168.0.1:798/foo | http://192.168.0.2/foo |
*://[fe80::7d15:f81e:c9c7:d2d9] | http://[fe80::7d15:f81e:c9c7:d2d9]/foohttp://[fe80::7d15:f81e:c9c7:d2d9]:80/foo | http://[fe81::7d15:f81e:c9c7:d2d9] |
*://*contoso**://*contoso*/* | http://contoso.com/foohttp://contoso.mail.com/foohttps://acontosoy.com/foo | http://contosi.com |
*://*.contoso.* | http://mail.contoso.com/foohttps://smtp.contoso.other.com/foo | http://contoso.com (頂点を除く) |
https://*/path | https://contoso.com/pathhttps://a.contoso.com/pathhttps://other.com/pathhttps://mozilla.com/path?foo=1 | http://contoso.com/path (http) https://contoso.com/path/ (末尾スラッシュ) https://contoso.com/a |
https://*/path/ | https://contoso.com/path/https://a.contoso.com/path/https://contoso.com/path/?foo=1 | https://contoso.com/path (末尾のスラッシュは不要)https://contoso.com/a |
https://bar/test/foo | https://bar/test/foohttps://bar///test////foo (スラッシュが消える) | https://bar/t%65st/foo (%デコードなし) |
https://bar/t%65st/foo | https://bar/t%65st/foo | https://bar/test/foo (%デコードなし) |
https://hh/*/b/*/ (修正済み) | https://hh/a/b/c/https://hh/d/b/f/https://hh/a/b/c/d/#section1https://hh/a/b/c/d/?foo=bar | https://hh/b/c/ (/b/の前に何もない) https://hh/a/b/ (/b/の後に音素がない) |
コーナーケースとよくある質問
Path matching is exact, not “starts with.” …/reports そのページのみに一致し、 …/reports/や…/reports/2024には一致しません。使う …/reports/*、 …/reports*、または アプリ全体で …/* を使うことができます。
Trailing slash matters /path ≠ /path/ 。ベアホスト( https://app.contoso.com )はすべてのパスに一致します。これは最も単純な「アプリ全体」パターンです。
The wildcard host spans dots. *.contoso.* mail.contoso.com 、 mail.contoso.co.uk 、 smtp.contoso.other.comに一致します。強力だが、範囲が広すぎると問題が生じやすい。
*.host.com excludes the apex.
ルートドメイン用に別のhost.comパターンを追加します。
No port = default port only. https://app.contoso.com/* :8443とは一致しません。使う :*。
Query strings can’t go in a pattern and don’t affect matching.
署名済みのS3 URLや署名済みのCDN URLが、なぜパスパターンに一致するのか。
Fragments (#…) are ignored.
SPAハッシュルート( …/#inbox )をターゲットにすることはできません。ホストに一致させてください。
Resources are captured by the page, not by patterns.
監視対象ページのCDN/API/S3トラフィックは、それらのホストがリストに記載されていなくてもキャプチャされます。CDNホストをパターンとして追加しても、ユーザーがそれをトップレベルページとして開かない限り、何もキャプチャされません。
Over‑broad patterns capture everything. *://*/* すべてのサイトを監視している ― 情報量とプライバシーに関する懸念。アプリの範囲を指定します。
WebSockets aren’t recorded
* / ws / wssスキームでも (RUM は HTTP リソース タイミングに基づいています)。
IDNs need punycode.
café.fr → xn--caf-dma.fr; münchen.de → xn--mnchen-3ya.de.
Cross‑origin timing detail depends on the server.
クロスオリジンリソースは常にカウントされますが、詳細なサブタイミングにはTiming-Allow-Originレスポンスヘッダーが必要です。それが欠けている場合、リソースは限られた時間内で表示されます。これはサーバーヘッダーであり、パターン設定ではありません。
urlExclusions remove traffic from a monitored page.
同じ構文です。ノイズの多いホストや経路(分析、テレメトリ)を排除するために使う。 除外設定は削除のみを行い、キャプチャを追加することはありません。
簡単なトラブルシューティングチェックリスト
IDN host not matching?
Convert to punycode.
No data at all?
パターンがユーザーがアクセスしたページの URL と一致することを確認します (パスの完全性、頂点ドメインとサブドメイン)。試す まずは素のホスト…/*形をとる。
Only the landing page, not the rest?
パスを固定しました。 /page /* (または/section/* ) に切り替えます。
Works on app.contoso.com but not contoso.com?
頂点パターンを追加します。
Nothing on a non‑standard port?
Add :*.
Missing a sub‑app on another domain?
これは独立したページとして読み込まれます。パターンを追加してください。
CDN/S3/API requests “missing”?
それらは親ページに紐づいています。監視対象ページの詳細を開いてください。単独のホストページを開いてはいけません。

