Projet

Général

Profil

Development #59832

statistiques de fréquentation, code js, retirer automatiquement les balises <script>

Ajouté par Frédéric Péters il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
17 décembre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

L'interface de Matomo fait tout son possible pour que soit copié/collé le JS avec des balises <script> mais côté Hobo on va détecter ça et dire "Le champ doit uniquement contenir le code Javascript. Vous devriez retirer les balises <script>".

On pourrait sur ce cas prendre automatiquemnet le contenu de <script>.


Fichiers

Révisions associées

Révision b333bf48 (diff)
Ajouté par Paul Marillonnet il y a plus de 2 ans

matomo: try to load tracking js included in script tags (#59832)

Historique

#1

Mis à jour par Paul Marillonnet il y a plus de 2 ans

Déjà l’approche de base à chercher dans le code pour la chaîne '<script' n’est plus suffisante à partir du moment où on remplace du contenu.
Je pense que la bonne approche c’est de tenter de parser le contenu comme du html, et sur un succès seulement et présence d’une balise script détectée au parsage, alors on remplace le contenu global par le contenu de la balise script. On laisse le contenu inchangé sinon.

#2

Mis à jour par Paul Marillonnet il y a plus de 2 ans

  • Assigné à mis à Paul Marillonnet

Je vais regarder.

#3

Mis à jour par Paul Marillonnet il y a plus de 2 ans

#4

Mis à jour par Thomas Noël il y a plus de 2 ans

Dans ma jeunesse, parser du HTML en XML, c'était le plantage assuré, les temps changent :)

Mais sinon le code me semble un peu compliqué, j'imaginais plutôt le parsing XML complétement contenu dans un try/except, genre :

        try:
            xml_node = etree.fromstring(value)
            if xml_node.tag == 'script':
                script_tag = xml_node
            else:
                script_tag = xml_node.find('script')
            if script_tag is not None:
                return script_tag.text
        except etree.ParseError:
            pass
#5

Mis à jour par Frédéric Péters il y a plus de 2 ans

J'aurais du mentionner l'HTML proposé par Matomo, qu'il soit utilisé dans les tests plutôt que le fictif <script>...js_code_3...</script>.sur une réalité :

<!-- Matomo -->
<script type="text/javascript">
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://.../";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '112']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Matomo Code -->
#6

Mis à jour par Paul Marillonnet il y a plus de 2 ans

Thomas Noël a écrit :

Dans ma jeunesse, parser du HTML en XML, c'était le plantage assuré, les temps changent :)

Mais sinon le code me semble un peu compliqué, j'imaginais plutôt le parsing XML complétement contenu dans un try/except, genre :

[...]

Ok, j’avais la version du patch car il me paraissait plus simple de ne garder dans le try … except que la partie susceptible de lever la ElementTree.ParseError, mais ce que tu proposes me va très bien aussi.

Frédéric Péters a écrit :

J'aurais du mentionner l'HTML proposé par Matomo, qu'il soit utilisé dans les tests plutôt que le fictif <script>...js_code_3...</script>.sur une réalité :

[...]

Ok, inclus dans les tests.

#7

Mis à jour par Thomas Noël il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée

Paul Marillonnet a écrit :

Ok, j’avais la version du patch car il me paraissait plus simple de ne garder dans le try … except que la partie susceptible de lever la ElementTree.ParseError, mais ce que tu proposes me va très bien aussi.

C'est juste que le code ainsi indenté me parait plus clair ("si le parsing foire, on passe tout") mais c'est certainement très très subjectif.

En tout cas ça me va bien ainsi (forcéement ;) )

#8

Mis à jour par Paul Marillonnet il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit b333bf483345321996e35abb4e9215a37c8e07fc
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Fri Dec 17 11:15:51 2021 +0100

    matomo: try to load tracking js included in script tags (#59832)
#9

Mis à jour par Frédéric Péters il y a plus de 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#10

Mis à jour par Transition automatique il y a environ 2 ans

Automatic expiration

Formats disponibles : Atom PDF