Bug #14881
phantomjs: erreur occasionelle lors de l'ouverture des pages web
100%
Description
De temps en temps sur les portail Mediatheque de Montpel et portail Famille de Meyzieu, phantomjs affiche en sortie standart:
Blocked a frame with origin "file://" from accessing a frame with origin "null". The frame requesting access has a protocol of "file", the frame being accessed has a protocol of "about". Protocols must match.
après le json produit par
do_login.js
. Cela provoque des erreurs de parsing json, alors que l'authentification se passe bien.
Je lance à la main la commande suivante :
$ phantomjs --ignore-ssl-errors=yes --ssl-protocol=any --debug=yes mandayejs/do_login.js < meyzieu.famille.json
avec le json joint.
Les deux utilisent Google Analytics et à croire les logs de debug cela pourrait en être la cause
2017-02-03T16:43:37 [DEBUG] Network - Resource request error: QNetworkReply::NetworkError(OperationCanceledError) ( "Operation canceled" ) URL: "http://www.google-analytics.com/__utm.gif?utmwv=5.6.7&utms=2&utmn=1901876124&utmhn=meyzieu.portail-familles.com&utmcs=UTF-8&utmsr=1366x768&utmvp=1280x1024&utmsc=24-bit&utmul=en-gb&utmje=0&utmfl=11.2%20r202&utmdt=MEYZIEU%20-%20Authentification&utmhid=1342922132&utmr=0&utmp=%2Fmeyzieu%2Fpage%2Fteamnetauth%2Faction%2Flogin%2Ferror%2Finvalid%2Ferror_msg%2FL'identifiant%252520et%2Fou%252520le%252520mot%252520de%252520passe%252520que%252520vous%252520avez%252520saisi%252520est%252520incorrect.&utmht=1486136616201&utmac=UA-56731803-1&utmcc=__utma%3D121734295.871330394.1486136616.1486136616.1486136616.1%3B%2B__utmz%3D121734295.1486136616.1.1.utmcsr%3D(direct)%7Cutmccn%3D(direct)%7Cutmcmd%3D(none)%3B&utmjid=&utmu=qAAAAAAAAAAAAAAAAAAAAAAE~"
Fichiers
Révisions associées
Historique
Mis à jour par Serghei Mihai il y a environ 7 ans
Suggestion lors de la discussion sur la conf: mettre la sortie JSON produite par do_login.js
dans un block (genre === OUTPUT===
ou whatever) afin de la séparer des erreurs possibles de phantomjs et ne parser que ce contenu dans le code python.
Mis à jour par Frédéric Péters il y a environ 7 ans
Dans phantomjs 2.1.1, cette ligne "Network - Resource request error" est envoyée sur qDebug() ("The Qt implementation of these macros prints to the stderr output under Unix/X11"). Aussi, ça semble pouvoir êtré contrôlé par QT_LOGGING_RULES, et faire un QT_LOGGING_RULES="*.debug=false" pourrait permettre de cacher ça. Alternatiivement il y a aussi QT_MESSAGE_PATTERN qui pourrait être utile pour préfixer ces messages de manière particulière.
Mis à jour par Josué Kouka il y a environ 7 ans
- Fichier 0001-only-get-stdout-enclosed-by-mandayejs-tag-14881.patch 0001-only-get-stdout-enclosed-by-mandayejs-tag-14881.patch ajouté
- Statut changé de Nouveau à En cours
- Assigné à mis à Josué Kouka
- Patch proposed changé de Non à Oui
Ce patch est basé sur master.
Mis à jour par Josué Kouka il y a environ 7 ans
- Fichier 0001-only-get-stdout-enclosed-by-mandayejs-tag-14881.patch 0001-only-get-stdout-enclosed-by-mandayejs-tag-14881.patch ajouté
ajout test cas de non match
Mis à jour par Frédéric Péters il y a environ 7 ans
function mandaye_log(message){ mandaye_log('<mandayejs>'+message+'</mandayejs>') }
Tu récupères ainsi le message de mandayejs au milieu de la trace qui dit que la pile a explosé ?
Mis à jour par Josué Kouka il y a environ 7 ans
- Fichier 0001-only-get-stdout-enclosed-by-mandayejs-tag-14881.patch 0001-only-get-stdout-enclosed-by-mandayejs-tag-14881.patch ajouté
Frédéric Péters a écrit :
[...]
Tu récupères ainsi le message de mandayejs au milieu de la trace qui dit que la pile a explosé ?
Oui. Peut importe ce qui arrive, je ne récupère que ce qui se trouve entre les balises.
Mis à jour par Frédéric Péters il y a environ 7 ans
Ok, mon message n'était pas clair.
function mandaye_log(message){ mandaye_log('<mandayejs>'+message+'</mandayejs>') }
mandaye_log appelle mandaye_log pour logguer. Ainsi de suite. Explosion de la pile. mandaye_log devrait utiliser autre chose pour écrire.
Mis à jour par Josué Kouka il y a environ 7 ans
- Fichier 0001-only-get-stdout-enclosed-by-mandayejs-tag-14881.patch 0001-only-get-stdout-enclosed-by-mandayejs-tag-14881.patch ajouté
Frédéric Péters a écrit :
Ok, mon message n'était pas clair.
[...]
mandaye_log appelle mandaye_log pour logguer. Ainsi de suite. Explosion de la pile. mandaye_log devrait utiliser autre chose pour écrire.
Oui t'as raison désole.
Mis à jour par Frédéric Péters il y a environ 7 ans
En fait, c'est plutôt un "voici la réponse mandaye" et rien ne pourra venir derrière, il y a systématiquement un phantom.exit() tapé derrière l'appel d'ailleurs. Plutôt l'intégrer.
Mis à jour par Frédéric Péters il y a environ 7 ans
re.search('<mandayejs>(.*?)</mandayejs>', stdout)
on peut très bien avoir des retours à la ligne dans le json; utiliser re.DOTALL.
Mis à jour par Josué Kouka il y a environ 7 ans
- Fichier 0001-only-get-stdout-enclosed-by-mandayejs-tag-14881.patch 0001-only-get-stdout-enclosed-by-mandayejs-tag-14881.patch ajouté
Frédéric Péters a écrit :
En fait, c'est plutôt un "voici la réponse mandaye" et rien ne pourra venir derrière, il y a systématiquement un phantom.exit() tapé derrière l'appel d'ailleurs. Plutôt l'intégrer.
+1
re.search('<mandayejs>(.*?)</mandayejs>', stdout) on peut très bien avoir des retours à la ligne dans le json; utiliser re.DOTALL.
Done
Mis à jour par Josué Kouka il y a environ 7 ans
Mis à jour par Serghei Mihai il y a environ 7 ans
Toujours le mauvais patch? Il manque le re.DOTALL
Mis à jour par Josué Kouka il y a environ 7 ans
- Fichier 0001-only-get-stdout-enclosed-by-mandayejs-tag-14881.patch 0001-only-get-stdout-enclosed-by-mandayejs-tag-14881.patch ajouté
Serghei Mihai a écrit :
Toujours le mauvais patch? Il manque le
re.DOTALL
Mis à jour par Serghei Mihai il y a environ 7 ans
Dans le test, tu peux rajouter une representation JSON sur plusieures lignes pour être sûr que le re.DOTALL
fonctionne ?
Mis à jour par Josué Kouka il y a environ 7 ans
- Fichier 0001-only-get-stdout-enclosed-by-mandayejs-tag-14881.patch 0001-only-get-stdout-enclosed-by-mandayejs-tag-14881.patch ajouté
Serghei Mihai a écrit :
Dans le test, tu peux rajouter une representation JSON sur plusieures lignes pour être sûr que le
re.DOTALL
fonctionne ?
Done
Mis à jour par Josué Kouka il y a environ 7 ans
- Statut changé de En cours à Résolu (à déployer)
- % réalisé changé de 0 à 100
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Fermé
only get stdout enclosed by <mandayejs> tag (#14881)