2

J'implémente un certain blocage des hôtes dans mon extension Web, à ce stade, je suis ["http://*/*", "https://*/*"] puis en utilisant une fonction regex pour filtrer les URL mais je veux affiner les modèles de correspondance au lieu d'utiliser regex correspondant sur chaque demande unique, est-ce possible?Caractère générique TLD pour le blocage de webRequest dans l'extension Firefox?

+1

Comme vous pouvez le voir dans la documentation et les exemples d'extensions, addListener prend en charge le filtrage d'URL. – wOxxOm

+0

Il ne semble pas avoir de filtre TLD ou de joker, je m'assure juste que c'est vraiment le cas avant de passer à d'autres méthodes. (parce que cela permettrait d'économiser un peu de temps) – regularjoe

+0

Oui, il n'y a pas de TLD wirldcard. Quoi qu'il en soit, le fait est que le filtrage d'URL déclaratif est la bonne méthode. – wOxxOm

Répondre

1

webRequest.RequestFilterMDN URL sont spécificateurs Match PatternsMDN. Les modèles de correspondance n'ont pas la capacité de générer des domaines génériques de premier niveau. Ils ne devraient pas ont cette capacité. L'utilisation d'un caractère générique pour le TLD est intrinsèquement non sécurisé. Vous ne devriez pas essayer de le faire. Il est aucun moyen de garantir que quelle que soit entreprise/site que vous essayez de couvrir obtiendrez chaque version du nom pour chaque TLD.

Si vous souhaitez couvrir une entreprise possédant plusieurs TLD, vous devez déterminer la liste des domaines dont elle est propriétaire dans chaque TLD et les spécifier individuellement. Oui, il peut être moins de texte pour le spécifier avec une expression régulière qui fournit un ensemble limité de TLD.

Par exemple, si les expressions régulières ont été autorisées, puis https://example.com, https://example.org/ et https://example.edu/ aurait pu être quelque chose comme /https?:\/\/(?:[^.\/]*\.)*example\.(?:com|edu|org)\//, mais Patterns match n'ont pas des expressions régulières. Le caractère générique limité dont ils disposent * représente tout ce qui, s'il est utilisé à la place d'un TLD, correspond à n'importe quel TLD, ou même à un domaine et à un sous-domaine. Donc, à la fin, vous devrez énumérer chaque domaine, y compris le TLD, séparément.

Comme vous l'avez déterminé, vous pouvez utiliser <all_urls> (ou similaire), puis filtrer dans votre gestionnaire. Cela est sous-optimal. Si vous le faites, vous devriez travailler à rendre l'auditeur rapide. Il ne devrait pas effectuer d'opérations superflues, au moins jusqu'à ce que l'on sache si l'URL est celle qu'il va ou ne traitera pas plus loin.

+1

Je voudrais entendre un argument pour le caractère générique TLD étant incertain quand il s'agit de webrequest BLOCKING, je comprends vraiment l'aspect de la sécurité quand il s'agit d'injecter du contenu/quoi que ce soit d'autre. – regularjoe

+0

@regularjoe, Si vous bloquez * seulement *, le problème concerne plus le fonctionnement que l'intention de conception/les attentes de l'utilisateur. Cependant, l'interface, et les motifs de correspondance en général, est/sont conçus pour une application plus large, y compris quand injecter des scripts de contenu. Cela ne signifie pas qu'ils n'auraient pas pu utiliser quelque chose de plus complexe pour 'webRequest.RequestFilters'. Après tout, ils auraient pu utiliser ['events.UrlFilter'] (https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/events/UrlFilter). Il existe déjà, est utilisé sur 'webNavigation', et supporte la correspondance RegExp. – Makyen