Les modèles d’URL indiquent à l’extension du navigateur Netskope DEM quelles applications web surveiller. Les bien faire est l’étape de mise en place la plus importante, et la source la plus courante pour savoir pourquoi je ne vois pas les données ? questions. Ce guide explique comment fonctionnent les motifs, la syntaxe exacte, les exemples réels de SPA et MPA, ainsi que chaque cas de coin.
Read this first — the one concept that prevents most mistakes: Un motif d’URL correspond à la page (la navigation de premier niveau). Après qu’une page a été surveillée, l’extension capture automatiquement tout ce que la page charge : tous les appels API, toutes les ressources (JS, CSS, images, polices), ainsi que toutes les requêtes d’origine croisée, y compris les ressources servies depuis des CDN ou un stockage cloud comme Amazon S3. Vous ne listez pas les hôtes CDN, API ou stockage dans vos patterns ; Vous listez les pages de votre application, et leur trafic suit automatiquement.
Comment fonctionne réellement la capture
Il y a deux étapes, et les confondre est à l’origine de la plupart des erreurs de configuration.
Stage 1: Patterns select the Page
Lorsqu’un onglet navigue vers un document New , l’extension vérifie l’URL de la page par rapport à la urlPatterns de votre application (et urlExclusions). Si un motif correspond, la surveillance de cette page commence.
Étape 2 : Tout le trafic de la page est capturé automatiquement
Après qu’une page a été surveillée, l’extension enregistre every requête qu’elle effectue (via l’API de timing des ressources W3C du navigateur) :
- La navigation de la page elle-même
- Toutes les ressources : JavaScript, CSS, images, polices, médias
- Chaque appel API :
fetch,XMLHttpRequest,beacon - Quel que soit l’hôte : votre origine, un CDN, un sous-domaine API, un tiers ou un stockage Amazon S3 / Azure Blob
Les seules choses qui éliminent le trafic sont vos urlExclusions et un filtre intégré qui ignore les demandes nonhttp(s).
Takeaway: Configurez les motifs pour les pages que les utilisateurs visitent, pas pour les assets que ces pages chargent. Si votre interface utilisateur est en https://app.contoso.com/*, mais extrait des données de api.contoso.com, et des fichiers de S3, le seul motif https://app.contoso.com/* capture les trois.
When do you need a pattern for another host? Seulement lorsque cet hôte est ouvert comme une page de premier niveau à part entière, comme un fichier qui s’ouvre dans son propre onglet, une page d’authentification sur un autre domaine que vous souhaitez surveiller, ou une sous-application séparée sur un autre domaine.
Format du motif
<scheme>://<host>[:port][/path]
Scheme
L’un des suivants : http, https, ws, wssou *.
*correspond à l’un des quatre.- Le schéma détermine le port par défaut.
- Practical guidance: Utilisez
https, ou*pour être indépendant du système.ws/wsssont acceptés, mais le trafic WebSocket n’est pas enregistré (RUM est basé sur HTTP).
Host
Insensible aux majuscules. Les lettres ASCII, chiffres, trait d’union, point et le joker *. IPv6 pris en charge entre parenthèses, comme [fe80::7d15:f81e:c9c7:d2d9].
*Correspond à n’importe quelle série de personnages, y compris les points de vue :*.contoso.comcorrespondmail.contoso.cometa.b.contoso.com.- ⚠️
*.contoso.comcorrespond not au sommetcontoso.com. Ajoutezcontoso.comaussi. - Un hôte non wildcard correspond exactement —
contoso.comn’est pas ses sous-domaines.
Port
- Omitted: l’URL doit utiliser le port standard du schéma (80 pour
http/ws, 443 pourhttps/wss). Un pattern sans port correspondra not à un port non standard. :*→ n’importe quel port.:<number>→ ce portage exact.
Path
- Omitted/empty → correspond à tous les chemins (comme
/*). - Ça commence par
/; peut contenir*; Pas de?ni de#. - Matching is exact — a full match of the whole path, not a prefix.
/pathCorrespond uniquement/path, pas/path/ni/path/x. Utilise*pour prolonger. - Les barres obliquées consécutives s’effondrent à un (
/a///b→/a/b). - Apparié uniquement avec le chemin de l’URL — requête (
?…) et fragment (#…) sont d’abord supprimés.
Interdit selon un schéma
- Query strings. Un schéma avec
?est rejeté. (La correspondance ignore toujours la requête d’une URL, donc une URL S3 présignée comme…/file?X-Amz-Signature=…correspond sur son chemin.) - A literal
*.*c’est toujours une carte sauvage. - Non‑ASCII. Utilisez le punycode pour les IDN :
www.café.fr→www.xn--caf-dma.fr(trait d’union classique-). - No percent‑decoding.
https://contoso.com/test/*Est-ce not correspondhttps://contoso.com/t%65st?
Les principales erreurs des règles d’or
| Number | Rule | Wrong | Right |
|---|---|---|---|
| 1 | To capture a whole app, don’t pin a path (le matching de chemin est exact). | 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/* (sous /portal/) ou …/portal* (également /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/* (rate :8443) | https://app.contoso.com:*/* |
| 5 | List pages, not assets. | Ajouter *.cloudfront.net, *.s3.amazonaws.com pour capturer les assets | Juste https://app.contoso.com/* — les actifs capturés automatiquement |
| 6 | Don’t over‑match. | https://*/dashboard (tous les hôtes sur Internet) | https://app.contoso.com/dashboard* |
Exemples réels
Voici quatre types d’exemples concrets : applications à page unique, applications multipages, applications utilisant AWS S3 (ou autre stockage cloud), et une application interne typique.
Applications à page unique (SPA)
Les SPA se chargent une fois, puis changent de vue via le routage côté client (le chemin ou #fragment change sans navigation complète). L’extension correspond à la navigation initiale, donc vous correspondez à l’hôte, pas aux routes intégrées, et vous ne pouvez pas cibler une route #fragment de toute façon. Les appels API de l’application et les ressources CDN/stockage sont capturés automatiquement.
| Application | Patron(s) recommandé(s) | Notes |
|---|---|---|
| Microsoft SharePoint Online | https://contoso.sharepoint.com/* | Ajouter OneDrive https://contoso-my.sharepoint.com/*. Assets de *.sharepointonline.com, *.office.net, Akamai, Azure Blob — capturés automatiquement. |
| Salesforce (Lightning) | https://*.lightning.force.com/*https://*.my.salesforce.com/* | L’interface utilisateur et l’API couvrent les deux hôtes ; incluez les deux. |
| Google Workspace (Gmail/Docs) | https://mail.google.com/*https://docs.google.com/* | Le routage par hachage (#inbox) est invisible aux patterns et ne nécessite aucune configuration. |
| Atlassian Jira/Confluence Cloud | https://contoso.atlassian.net/* | Hôte locataire unique ; API : même hôte + *.atlassian.com assets. |
| ServiceNow | https://contoso.service-now.com/* | Routage now/nav/… de style SPA ; Le motif de l’hôte le couvre. |
Applications multi-pages (MPA)
Les MPA effectuent une navigation réelle pour la plupart des actions, chargeant de nombreuses URL de pages distinctes. Chaque navigation est revérifiée, de sorte qu’une seule /* au niveau de l’hôte les couvre ; Ajoutez des jokers de sous-domaine/port si l’application en a plusieurs de plusieurs.
| Scénario | Patron(s) recommandé(s) | Notes |
|---|---|---|
| Application classique, plusieurs chemins, un seul hôte | https://portal.contoso.com/* | Capture chaque page (/login, /reports/2024, /admin/users...). |
| Application à travers les sous-domaines | https://*.contoso.com/* + https://contoso.com/* | Covers app., auth., reports. and the apex. |
| Jour ouvrable | https://*.myworkday.com/* | Les hôtes des capsules varient (wd2, wd5...) ; La carte joker du sous-domaine est la plus sûre. |
| Non‑standard port | https://app.contoso.com:*/* | Obligatoire par exemple pour :8443. |
Applications utilisant Amazon S3 (ou autre stockage cloud)
On n’a presque jamais besoin d’un patron S3. Deux cas :
- S3 as backend storage for assets/uploads/downloads loaded by your pages → no pattern needed: Capturé comme ressources/API de la page surveillée. Les URL pré-signées correspondent parfaitement (requête ignorée).
- S3 objects opened directly as their own tab: ajouter un motif correspondant au style URL que vous utilisez :
https://*.s3.amazonaws.com/* https://s3.amazonaws.com/* https://*.s3.*.amazonaws.com/* # regional, e.g. bucket.s3.us-east-2.amazonaws.com
Une application interne typique
UI à https://app.contoso.com, API REST à https://api.contoso.com, fichiers en S3, HTTPS uniquement :
https://app.contoso.com/*
C’est tout. Les appels api.contoso.com et les chargements S3 sont capturés automatiquement car ils sont effectués by les pages surveillées. Ajouter un motif S3 uniquement si les utilisateurs ouvrent des URL de buckets comme onglets indépendants ; ajouter https://api.contoso.com/* uniquement si les utilisateurs ouvrent directement l’hôte API.
Exemples de correspondance de motifs
Vérifié par rapport au moteur de correspondance de l’extension. Chaque ligne peut lister plusieurs motifs équivalents.
| Modèle d'URL | Exemples de correspondances | Exemples de non-matchs |
|---|---|---|
*://*:**://*:*/* | 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 (apex exclu) |
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/ (barre traînante)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 (pas de barre traînante)https://contoso.com/a |
https://bar/test/foo | https://bar/test/foohttps://bar///test////foo (les coups s’effondrent) | https://bar/t%65st/foo (pas de décodage %) |
https://bar/t%65st/foo | https://bar/t%65st/foo | https://bar/test/foo (pas de décodage %) |
https://hh/*/b/*/ (corrigé) | 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/ (rien avant /b/)https://hh/a/b/ (pas de segment après /b/) |
Affaires d’angle & FAQ
Path matching is exact, not “starts with.” …/reports Correspond seulement à cette page, pas à …/reports/ ni à …/reports/2024. Utilisez …/reports/*, …/reports*ou …/* pour toute l’application.
Trailing slash matters /path ≠ /path/. Un hôte nu (https://app.contoso.com) correspond à tous les chemins — le motif le plus simple de « toute l’application ».
The wildcard host spans dots. *.contoso.* correspond mail.contoso.com, mail.contoso.co.uk, smtp.contoso.other.com. Puissant mais facile à surdimensionner.
*.host.com excludes the apex.
Ajoutez un motif host.com séparé pour le domaine root.
No port = default port only. https://app.contoso.com/* Ne correspondra pas à :8443. Utilisez :*.
Query strings can’t go in a pattern and don’t affect matching.
Pourquoi les URL S3 / CDN présignées correspondent toujours à un schéma de chemin ?
Fragments (#…) are ignored.
Vous ne pouvez pas cibler une route de hachage SPA (…/#inbox) — correspondre à l’hôte.
Resources are captured by the page, not by patterns.
Le trafic CDN/API/S3 d’une page surveillée est capturé même si ces hôtes ne sont pas listés. Ajouter un hôte CDN comme motif ne capture rien à moins que les utilisateurs ne l’ouvrent en tant que page de premier niveau.
Over‑broad patterns capture everything. *://*/* Surveille chaque site — préoccupations de volume et de confidentialité. Ajustez la portée de vos applications.
WebSockets aren’t recorded
Même avec un schéma */ws/wss (RUM est basé sur le timing des ressources 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.
Une ressource à origine croisée est toujours comptée, mais les sous-timings détaillés nécessitent un en-tête de réponse Timing-Allow-Origin. L’absence signifie que la ressource apparaît toujours avec un timing limité — un en-tête serveur, pas un réglage de pattern.
urlExclusions remove traffic from a monitored page.
Même syntaxe ; Utilisé pour supprimer des hôtes/chemins bruyants (analytique, télémétrie). Les exclusions ne font que supprimer — jamais ajouter la capture.
Liste de contrôle rapide pour le dépannage
IDN host not matching?
Convert to punycode.
No data at all?
Confirmez qu’un motif correspond à l’URL de la page sur laquelle l’utilisateur se pose (exactitude de chemin, apex vs-sous-domaine). Essayez d’abord la forme …/* de l’hôte nu.
Only the landing page, not the rest?
Tu as tracé un chemin ; Changez /page pour /* (ou /section/*).
Works on app.contoso.com but not contoso.com?
Ajoutez le motif de l’apex.
Nothing on a non‑standard port?
Add :*.
Missing a sub‑app on another domain?
Il se charge comme une page à part entière ; Ajoutez un motif.
CDN/S3/API requests “missing”?
Ils sont attribués à leur page mère ; Ouvre le détail de la page surveillée, pas un hôte autonome.

