Avec <noscript> et <iframe>, comment arrêter le script ?

WRInaute accro
Bonjour

Pour mon anti-aspirateur, le problème est que l'incrémentation du compteur doit n'avoir lieu que si la page est en mode prerender : "visible", ou si Javascript est désactivé.

Chrome précharge les liens d'une page, celà entraînerait une augmentation trop rapide du compteur de l'anti-aspirateur.

Je suis donc obligé, de tenir compte de ce problème ( Chrome pour l'instant, Firefox bientôt ), pour la mise au point de mon anti-aspirateur.

Mais... Il y a aussi le cas du Javascript désactivé.

Ce problème de Chrome se produit-il aussi, si Javascript est désactivé ?

Dans tous les cas, il me faut déclencher le script d'anti-aspirateur en mode client sur le navigateur, en Javascript ou autre.

Quels sont tous les moyens de déclencher en mode client un script externe ( sur mon site ), quand Javascript est désactivé ?

Et surtout.. de bloquer l'exécution du script initial, si l'anti-aspirateur doit bloquer le site ?

Je connais <noscript> , ou même <img>, mais comment bloquer l'exécution du script initial ?

Merci beaucoup de vos réponses.

Respectueusement.
 
WRInaute accro
Je vous demande pardon

J'ai trouvé.

Un script "client" qui alimente les tables MySQL de règles de filtrage.

Un script "serveur" qui lit ces tables MySQL, et filtre les accès.

Simple comme bonjour.

Je suis confus.

Respectueusement.
 
WRInaute accro
Rebonjour

A ceux qui s'intéressent aux anti-aspirateurs :

Il s'avère que lancer un script en mode "client" n'est pas sûr.

Il vaut mieux forker ( en background ) en mode serveur un processus PHP, qui attend le temps que l'autre script client " Javascript" éventuel ait eu le temps de s'exécuter, et soit mette à jour l'enreg qui va bien du drapeau "1" au un drapeau "2" , et si l'enreg drapeau "1" n'existe pas, le crée avec un drapeau "2".

Dans le premier cas, cet enreg est unique ( puisque pour les pages précédentes, les drapeaux sont tous "2" ), et dans le deuxième cas,c 'est que Javascript est désactivé, donc le mode "prerender" ne se pose pas, donc le script forké ne sera lancé qu'une seule fois par page.

Quant au script PHP lancé en mode "Javascript", si la librairie existe ( "prerender" possible ), il n'est lancé qu'en mode"visible",( 1 seule fois / page ), et si la librairie, n'existe pas ( "prerender" impossible ), le script n'est aussi lancé qu'une seule fois / page.

Pour clore le tout, un troisième script PHP en mode serveur, lit les tables MySQL alimentées par les deux autres scripts, et bloque l'accès au site si besoin.

Que pensez-vous de ce type de solution ?

Il prévoit tout :

- Les accès normaux ( Chrome et autres ),
- les accès normaux avec et sans Javascript,
- Les hackers ( accès cUrl et autres robots. ).

Et aussi : Cette solution permet d'identifier les bots d'après leur reverse.

Pas de problèmes de visites rapides non détectées.

Pas de problèmes d'accès interdit injustifié.

Si problème de visiteurs honnêtes trop rapides: Facile d'enlever la règle de filtrage.

Enfin : Je n'enregistre pas les ips,mais les hash codes des ips ( ou des cookies ).

Respectueusement.
 
WRInaute accro
Voili, voilou ;)

J'ai refait en trois modules, l'anti-aspirateur TraceIP v3, de manière à ce qu'il ne compte qu'une page à la fois, quel que soit le navigateur.

Même avec Chrome, qui précharge tous les liens de la page chargée, seule la page chargée est prise en compte, pas les liens.

Les trois modules sont :

tmp_enreg_javascript.php ( déclenché en mode Javascript/Ajax ),

tmp_enreg_cli.php ( forké en mode réel cli après le module précédent ),

filtrage.php ( inclus au début de la fonction qui déclenche le module précédent en cli ).

Ce dernier script se charge de filtrer les accès au site, suivant les écritures dans la bdd faits par les deux autres scripts.

En gros :

Le premier script ne déclenche que si Javascript est activé, et seulement si la page est en mode prerender "visible".

Ce script met le drapeau à "1".

Le deuxième script attend 7 secondes, puis n'incrémente le compteur, que si le drapeau est à "2", c'est-à-dire si le premier script ne l'a pas déjà incrémenté. *et* si la dernière modification de l'enreg, date de 2 secondes au moins.

Ce n'est pas le cas, ( délai moindre ), si c'est un autre deuxième script qui a updaté l'enreg.

Ainsi, l'unicité de l'incrémentation/page est assurée.

Le reste, je l'ai tiré du site de TraceIP.

Cà marche très bien ce soir, j'ai réglé le délai max à 20 secondes et le nombre max de pages chargées à 5.

Celà donne une vitesse moyenne limite, de 4 secondes/page chargée.

S'il y a plus que 5 page chargées en 20 secondes, et que ce n'est pas un bot, l'ip est blacklistée.

Avec en plus un petit module d'admin hérité de TraceIP.

Mais... Je ne peux pas décemment faire de l'ombre à l'auteur de TraceIP, à qui je dois l'algorithme de limitation du nombre de pages/période, aussi je regrette de ne pas pouvoir communiquer mon soft.

Merci de vos avis.

Respectueusement.
 
Haut