Jump to content

Archived

This topic is now archived and is closed to further replies.

Ldfa

Tutorial sur les filtres de texte par abc@home

Recommended Posts

Vous trouverez ci-dessous un tutorial sur les filtres de texte réalisé par abc@home et posté à l'origine sur le Forum anglais : http://forum.maxthon.com/index.php?showtopic=62875.

 

La traduction a été réalisée par Odyssée et avec mon aide également. ;)

 

;) de nous faire part de vos remarques/suggestions éventuelles. ;)

Share this post


Link to post
Share on other sites

Le filtre de texte de Maxthon 2.0 est le moyen le plus efficace de supprimer les publicités, "nuisances" et contenus malicieux des pages web. De fait, le filtre de texte utilise des expressions avancées pour trouver et remplacer à la volée le code source des pages web, avant que le moteur de rendu n'ait eu le temps de les interpréter. Ainsi le filtre de texte peut non seulement supprimer tout contenu indésirable des pages web, mais encore modifier la façon dont celles-ci s'affichent ou se comportent sur votre ordinateur. Avant Maxthon 2.0, le filtrage de texte n'était disponible seulement dans des applications de filtrage du Web sophistiquées et dédies telle que Proxomitron et Privoxy.

 

Pour activer le filtre de texte dans Maxthon 2 :

 

Outils > Centre de configuration de maxthon > Tueur de pub > Activer les filtres

 

 

Ecrire des filtres de textes demande un peu de connaissances (mais rien d'exceptionnel), dont il sera question dans les lignes suivantes. Cependant, les utilisateurs ne sont pas obligés de créer leurs propres filtres pour profiter des avantages du filtre de texte. Dans Maxthon 2.0, les filtres de texte peuvent facilement être partagés sous forme de packs de filtres, qui sont des collections de filtres regroupés dans un fichier avec l'extension "m2f". Les packs de filtres s'installent automatiquement par double-clic ou par glisser déposer dans la fenêtre principale de Maxthon. Les packs installés peuvent être activés ou désactivés individuellement depuis la barre d'état ; ils peuvent aussi être édités ou supprimés depuis le Centre de configuration de Maxthon > Packs de filtres.

 

post-33-1170922757.gif

 

Les packs de filtre peuvent être globaux, c'est à dire contenir des filtres de texte sans restriction sur les sites où les filtres doivent être appliqués. Si un filtre global entraine des problèmes sur un site web donné, l'utilisateur peut exclure ce site en éditant le filtre. Les filtres suivants sont des filtres globaux pour des usages variés :

 

Désactiver les restrictions de la souris

Désactiver les curseurs personnalisés

Désactiver les barres de défilement personnalisées

Désactiver l'onglet vierge de téléchargement

Ouvrir les liens dans un nouvel onglet

 

 

En général, il est conseillé de faire des packs de filtre spécifiques à certains sites. Un filtre spécifique présente l'avantage de ne pas être appliqué sur les sites pour lesquels il n'est pas défini. Cela contribue non seulement à augmenter la vitesse de chargement des pages web, mais aussi à réduire les filtrages erronés. De plus, l'utilisateur peut choisir de n'installer que les filtres correspondants aux sites qu'il visite. Les filtres suivants sont des packs spécifiques à certains sites :

 

yahoo sports

nba.com

espn

 

 

Ecrire des filtres requiert quelques connaissances. Un filtre de texte doit être capable d'indentifier les codes html/js/css correspondant aux publicités, "nuisances" et contenus malicieux. Il faut donc avoir quelques connaissances en Html. Ensuite le filtre doit être capable de reconnaître les codes identifiés avec des expressions, de façon à ce que le code puisse être déplacé/supprimé. Dans le cas de Maxthon 2.0, il est nécessaire d'avoir quelques connaissances des expressions régulières. Et enfin, il nécessite de connaitre le format des filtres de maxthon qui est détaillé plus loin.

 

Aussi compliqué que cela paraisse, il n'est en fait pas difficile de bloquer des publicités avec un filtre de texte. Mais pourquoi les utilisateurs utiliseraient-ils des filtres relativement compliqués pour bloquer les ajouts, alors que le bon vieux filtre de contenu fonctionne bien ? En fait, le filtre de contenu marche bien dans la plupart des cas, mais il a des limitations.

 

Exemple 1 - Texte de publicité

 

<a href=...><font size=7>vous avez gagné le gros lot, verifiez le tout de suite!!!</font></a>

Le filtre de contenu est inactif dans ce cas.

 

Exemple 2 - Espace vide

 

<table height=90 width=728><tr><td><a href=...><img src=ad.gif></a></td></tr></table>

Le filtre de contenu peut bloquer "ad.gif", mais laisse un espace vide défini par l'élément <table>. le filtre de texte peut supprimer complètement l'élément <table>.

 

Exemple 3 - Publicité aléatoire

 

<div id=upperad><a href=adclick?...><img src=random_image></a></div>

Le filtre de contenu peut bloquer cette image aléatoire (ici il s'agit d'une image aléatoire mais qui ne contient pas explicitement le mot "random"), mais pas le texte. Le filtre de texte peut lui supprimer le lien contenant "adclick?", ou le <div> qui a pour id "upperad".

 

Exemple 4 - Section publicitaire

 

<!-- start ads -->
<a href=...><img src=pic.gif></a> 
<a href=...><img src=image.gif></a> 
<a href=...><img src=graphic.gif></a> 
<a href=...><img src=icon.gif></a> 
<a href=...><img src=art.gif></a>
<!-- end ads -->

Le filtre de contenu peut bloquer "pic.gif", "image.gif", "graphic.gif", "icon.gif", "art.gif" un par un. Le filtre de texte peut tout simplement supprimer tout ce qui est compris entre "" et "" en une seule fois.

 

Bien entendu, si le filtre de contenu vous satisfait complètement, vous n'avez pas besoin d'utiliser le filtre de texte. Sinon, le filtre de texte est disponible à votre convenance.

Share this post


Link to post
Share on other sites

Rentrons dans le vif du sujet.

 

Comment créer un pack de filtres :

 

- Outils > Centre de configuration de maxthon > Pack de filtres > Créer un nouveau.

- Saisir un nom tel que "Mes Filtres" et cliquer sur Ok.

- Activer le nouveau pack de filtres et sélectionner "Editer".

- Une boîte de dialogue comportant 2 filtres va s'ouvrir (pour la démo, vous pouvez supprimer les 2).

- Cliquer sur "Propriétés" et modifier l'explication correspondante.

 

post-33-1171006789.gif

 

 

Ajouter un filtre de texte :

 

- Cliquer sur "Ajouter" et sélectionner "Filtre de texte" depuis le menu déroulant.

- Saisir un nom, par exemple "Filtre 1" et cliquer sur Ok.

- Sélectionner "Filtre 1" dans le panneau de gauche et saisir les informations correspondantes dans le panneau de droite.

 

post-33-1171006823.gif

 

 

Pour le blocage de publicités ordinaires, seuls les champs suivants sont nécessaires dans la plupart des cas :

 

- action : l'action à exécuter quand une correspondance est trouvée, saisir "3" (remplacer par) ici.

- match : l'expression régulière utilisée pour établir les concordances

- replace : le remplacement du contenu correspondant, peut être laissé en blanc pour la suppression simple des publicités.

- match_url : pour les filtres spécifiques à un site, saisir l'url du site en question.

- exclude_url : pour les filtres globaux, saisir l'URL des sites pour lesquels le filtre ne doit pas s'appliquer.

- bound : l'expression régulière pour une "pré-selection", sera complétée plus tard.

Share this post


Link to post
Share on other sites

Cas n°1

 

nba.com contient des publicités qui sont englobées dans les commentaires <!-- begin ad tag --> et <!-- End ad tag -->, par ex.

 

<!-- begin ad tag -->
<script language="JavaScript" type="text/javascript">
document.write('<script language="JavaScript1.1" ...
...
<!-- End ad tag -->

 

Vous pouvez supprimer tous ces codes ainsi (les mots en vert sont des explications qui ne font pas parties du filtre) :

 

action=3 (remplace les contenus correspondants)

match=<!-- begin ad tag -->.*?<!-- End ad tag --> (cf. note 3 ci-dessous)

replace= (remplacement vide)

match_url=nba\.com (Seulement actif sur nba.com)

exclude_url= (aucun exclude_url n'est nécessaire dans ce cas)

bound= (aucun bound n'est nécessaire dans ce cas)

 

Note :

1. Dans une expression régulière, le . correspond à n'importe quel caractère unique, ou ? pour les caractères jokers. \. est requis pour spécifier un litéral.

2. Dans une expression régulière, .* correspond à n'importe quel nombre de caractères, ou * pour les caractères jockers. Mais vous devez utiliser .*? pour que la correspondance s'arrête après la première occurrence de "<!-- End ad tag -->".

3. <!-- begin ad tag -->.*?<!-- End ad tag --> correspond à <!-- begin ad tag --> et n'importe quoi avant <!-- End ad tag -->.

Share this post


Link to post
Share on other sites

Cas n°2 :

 

La plupart des publicités du site sports.yahoo.com sont contenues dans des cellules de table <td> qui inclus le mot "ADVERTISEMENT", par ex. :

 

<td align="center"><font face="arial" size="-2">ADVERTISEMENT</font><br><IFRAME SRC=...
...
</td>

 

Vous pouvez supprimer tous ces codes ainsi (les mots en vert sont des explications mais pas une partie du filtre) :

 

action=3 (remplace les contenus correspondants).

match=<td.*?><font.*?>ADVERTISEMENT.*?</td> (voir la note suivante).

replace= (remplacement vide).

match_url=sports\.yahoo\.com (seulement actif sur sports.yahoo.com).

exclude_url= (aucun exclude_url nécessaire dans ce cas).

bound= (aucun bound nécessaire dans ce cas).

 

Note :

1. <td.*?> correspond à <td et n'importe quoi avant le premier >

2. <font.*?> correspond à <font et n'importe quoi avant le premier >

3. ADVERTISEMENT.*?</td> correspond à ADVERTISEMENT et n'importe quoi avant le premier </td>

Share this post


Link to post
Share on other sites

Cas n°3

 

Chaque page du site espn.go.com contient plusieurs publicités dans des éléments <div> avec l'id suivant :

 

upperad

rightcolad

ad_Poster

ad_InContent

ad_MarketingLogo

 

par ex.

 

<div id="upperad" style="width: 772px; height: 90px; background-image: url(http://espn-ak.starwave.com/i/ad_bgd.gif); background-repeat: repeat;">
<center><iframe src...
...
</div>

 

action=3 (remplace les contenus correspondants).

match=<div id="(upperad|rightcolad|ad_Poster|ad_InContent|ad_MarketingLogo)".*?</div> (| signifie "ou").

replace= (remplacement vide).

match_url=espn\.go\.com (seulement actif sur espn.go.com).

exclude_url= (aucun exclude_url nécessaire dans ce cas).

bound= (aucun bound).

 

Le filtre ci-dessus peut supprimer les publicités, mais parfois les pages sont endomagées. C'est parfois dû au fait que l'élément <div> est nécessaire. Ce peut être <div id="upperad">...</div> ou <div id="upperad">...<div>...</div>...</div>. Le problème provient du fait que seulement partie en bleu est supprimée. Dans ce cas, nous pouvons utiliser le champ "bound" et modifier le filtre comme suit :

 

action=3 (remplace les contenus correspondants).

match=<div id="(upperad|rightcolad|ad_Poster|ad_InContent|ad_MarketingLogo)".* (cf. note 2 suivante).

replace= (remplacement vide).

match_url=espn\.go\.com (seulement actif sur espn.go.com).

exclude_url= (aucun exclude_url nécessaire dans ce cas).

bound=<div.*?<div.*?</div>.*?</div>|<div.*?</div>(cf. note 1 suivante).

 

Note :

1. "bound" prépare essentiellement un segment de code à un enchainement de correspondance/remplacement. Dans ce cas, "bound" retournera chaque <div...>...<div...>...</div>...</div> ou <div...</div>. Si le code entier du segment correspondant est retourné par "bound", il n'y a pas la possibilité de correspondre seulement à la partie bleu par erreur.

2. si "bound" est défini, le "match" doit correspondre au bound entièrement. Ici nous utilisons .* pour trouver tous les codes après l'ID de la publicité.

Share this post


Link to post
Share on other sites

on peut pas télécharger des packs de filtres :lol:

 

j'y comprends rien dans vos trucs :lol:

Share this post


Link to post
Share on other sites

En tout cas, je viens de commencer à lire la traduction (ça me rebutait un peu en anglais quand même) et c'est vachement intéressant alors merci à vous deux ! (j'pense que je finirai de lire ça plus tard en revanche :shocked:).

Share this post


Link to post
Share on other sites
En tout cas, je viens de commencer à lire la traduction (ça me rebutait un peu en anglais quand même) et c'est vachement intéressant alors merci à vous deux ! (j'pense que je finirai de lire ça plus tard en revanche :shocked: ).

Par contre, si tu pouvais regarder ma traduction de la fin d'un peu plus près, car je n'en suis pas vraiment satisfait. J'ai vraiment l'impression que ça ne veux pas dire la même chose qu'en anglais. :sneaky:

Share this post


Link to post
Share on other sites
Par contre, si tu pouvais regarder ma traduction de la fin d'un peu plus près, car je n'en suis pas vraiment satisfait. J'ai vraiment l'impression que ça ne veux pas dire la même chose qu'en anglais. :sneaky:

 

Juste pour dire que j'ai bien lu ton message, et je viens de lire le tutorial en anglais, je t'enverrai la traduction un poil modifiée par pm (problement ce soir) et tu verra ce que tu en penses. J'pense qu'on peut comprendre avec les mots que tu as utilisés mais on peut certainement clarifier le texte un peu plus :shocked: (En admettant que j'ai bien compris ce qu'il disait en anglais bien-sûr...).

Share this post


Link to post
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.