Eviter Fraude Dans la Comptabilisation de Clics - PHP - Programmation
Marsh Posté le 24-08-2006 à 17:19:28
aucune manière sûr à 100% (à moins que les utilisateurs disposent de comptes)
Marsh Posté le 24-08-2006 à 17:20:41
Bien sur que si
Les prestataires de pub (cibleclick, promobenef, doubleclick..etc) y parviennent sans cela ..
Si quelqu'un peut m'aider
Marsh Posté le 24-08-2006 à 17:21:32
pas au changement d'ip en tout cas
Marsh Posté le 24-08-2006 à 17:24:50
le sujet a déjà été abordé, et la conclusion est qu'il faut utiliser plusieurs méthodes complémentaires, (cookies, ip) mais que la solution ne sera jamais sûre à 100% (car c'est la machine qui vote, pas l'utilisateur...)
Marsh Posté le 24-08-2006 à 17:26:52
il faut faire un mix des deux, verif cookie + ip
(les régies de pub n'ont pas de stats 100% précises, il y a toujours moyen de "gruger" )
EDIT: grilled
Marsh Posté le 24-08-2006 à 17:26:54
Je comprends bien Ce que j'ai besoin, c'est de quelqu'un pour me guider pour bien combiner les méthodes, alors ..
Marsh Posté le 24-08-2006 à 17:31:26
fait une recherche alors
Marsh Posté le 24-08-2006 à 17:32:17
Ca fait une semaine que jnarrive pas à qq chose de bien ..
Quelqu'un ne veut pas me guider ?
Marsh Posté le 25-08-2006 à 12:56:55
Fais nous part de tes trouvailles.
Marsh Posté le 25-08-2006 à 13:00:53
Je vais coupler une vérification d'ips par 24h, à une vérification dun cookie créé, sur la même tranche horaire..
Mais ca ne me semble pas assez satisfaisannt..
Peut-on faire mieux ?
Marsh Posté le 25-08-2006 à 13:36:43
Création de compte "membre" pour ceux qui vont cliquer (Bannière disponible uniquement quand t'es loggué avec ton compte), c'est la seule manière totalement sûre (et encore, il faut vérifier qu'un utilisateur n'a pas plusieurs comptes), mais c'est très contraignant dans la plupart des cas.
Autrement il n'y a aucun moyen totalement fiable: L'utilisateur peut utiliser un proxy pour changer d'ip, déco/reco pour changer d'ip, supprimer ses cookies, etc...
Marsh Posté le 25-08-2006 à 13:41:19
Impossible car ce sont des bannières qui seront disséminées partout sur le web ! Nimporte qui pourra cliquer dans le monde .. DOnc pas possible de créer des comptes ..
Comment alors récupérer l'ip le plus "fiable" des users ?
Marsh Posté le 25-08-2006 à 13:49:46
Si je comprends bien, tu vas proposer tes bannières sur plein de sites ne t'appartenant pas, et tu voudrais que lorsque les personnes cliquent dessus, cela déclenche un test du côté de ton site "si l'user a déjà cliqué, ne pas incrémenter" ?
De mémoire, pour récupérer l'ip de l'utilisateur il faut passer par la variable d'environnement $REMOTE_ADDR.
Marsh Posté le 25-08-2006 à 14:08:45
Oui pour les deux
Le problème du remote addr, c'est que je crois que l'ip récupéré n'est pas le plus fiable et qu'on peut faire mieux ! Quelqu'un peut confirmer ?
Marsh Posté le 25-08-2006 à 14:10:01
non tu peux pas faire mieux que $_SERVER['remote_addr']
il n'existe pas d'ip "fiable" et d'ip "non fiable"
Marsh Posté le 25-08-2006 à 14:11:27
L'IP pour identifier un visiteur, c'est on ne peut plus incorrect.
Marsh Posté le 25-08-2006 à 14:13:36
"L'IP pour identifier un visiteur, c'est on ne peut plus incorrect."
Que proposes-tu d'autre ?
Marsh Posté le 25-08-2006 à 14:14:56
lol... dans ce cas, tu doispouvoir aussi récupérer le site depuis lequel viens le visiteur, et demandé au visiteur de se connecter sur ton site sans quoi son vote ne sera pas pris en compte
Marsh Posté le 25-08-2006 à 14:20:27
ncdetoulouse a écrit : Que proposes-tu d'autre ? |
Rien. Une identification unéquivoque est impossible et c'est bien mieux ainsi. Même avec un compte, c'est pas garanti.
Marsh Posté le 25-08-2006 à 14:22:36
ReplyMarsh Posté le 25-08-2006 à 14:36:52
Il faut que tu prennes en comptes le fait que certains webmaster sont spécialisés dans la "forge de header". Meme si cette pratique est en soit illégale, elle devient nécessaire pour certains types d'applications.
Ton système ne pourras pas fonctionner si tu le bases uniquement sur les IP v4. Il suffit de réflechir 2 sec : pénurie d'IP => NAT, Proxy ...
Par contre sur IPv6 le nombre d'IP disponibles est bien plus grand que le nombre utilisés ( pour l'instant ...?).
Quoi qu'il en soit la fonction suivante te sera utile pour ton travail
Code :
|
Sur place ou à emporter ?
Marsh Posté le 25-08-2006 à 14:40:05
Ca m'a l'air assez puissant ..
Mais pourrais-tu me l'expliquer un peu ? Car je suis un peu perdu devant ça ..
Marsh Posté le 25-08-2006 à 14:40:44
ncdetoulouse a écrit : Merci de cette aide précieuse, sircam lol |
Il faut distinguer désirs et réalité. Ce n'est pas parce que tu souhaites qq chose que cela est possible.
Il est constant que ce que tu demandes n'est pas réalisable. Au mieux, tu peux réduire l'imprécision, mais ce que tu demandes, je te cite, "toute tentative de fraude dans ce sens ne doit pas être pris en compte", n'est pas du domaine du possible.
Il est vrai que la fraude prend une place assez importante (je n'ai plus de chiffres de mémoire, ce n'est pas un sujet qui me passionne). Le coup des cookies, bof : un robot s'en passera et tu ne peux pas obliger à ce qu'un cookie soit utilisé (sinon, ce sera un false positive). Le coup de l'IP, oublie. Il est toujours plus simple de simuler un comportement humain que de détecter un robot.
Finalement, c'est mieux comme ça.
Marsh Posté le 25-08-2006 à 14:47:56
La fonction valid_ipv4 est une fonction qui va tester ta chaine $ip_addr pour vérifier si elle est une IP correcte e.g (0.0.0.0 => 255.255.255.255).
Tu px très bien ajouter les ip reservées dans cette fonction
Code :
|
Deuxième fonction getip :
Si l'utilisateur est derrière un proxy
1°) recuperer la chaine X_FORWARDED_FOR
2°) la dernière IP de cette chaine est celle de notre utilisateur derriere le proxy
3°) ip2long et long2ip sont vulgairement des cast
4°) si la dernière ip est IPV4 alors on l'utilise
1bis°)si l'utilisateur n'est pas un derrière un proxy prendre REMOTE_ADDR qui elle est toujours fiable ( not forgeable ).
PS: Bien entendu une personne souhaitant contourner ce filtre pourra toujours le faire mais cela representent très peu de gens
Encore une fois le test IP seul ne te permettra pas de valider complètement tes clicks.
Je te suggère fortement de t'inspirer de système existants prend Adbrite par exemple.
Edit: Lire les articles sur les sujets disponibles sur le Web.
1°) Google: Ip spoofing
2°) ISP, NAT, proxy, SOCKS ( Reseau )
3°) Protocole HTTP
4°) Doc php
5°) http://www.kloth.net/internet/badbots.php
Marsh Posté le 25-08-2006 à 15:07:10
On va surement se moquer de moi, là, mais en essayant le code suivant je n'ai absolument RIEN qui s'affiche sur pa page de test, pq ?!
<?
$ip1=$_SERVER['remote_addr'];
function valid_ipv4($ip1){ $num="([0-9]|1?\d\d|2[0-4]\d|25[0-5])"; $range="([1-9]|1\d|2\d|3[0-2])"; if(preg_match("/^$num\.$num\.$num\.$num(\/$range)?$/",$ip1)) { return true; } return false;}function getip(){ if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) ){ $ips = explode(', ', $_SERVER['HTTP_X_FORWARDED_FOR']); $ip = valid_ipv4(long2ip(ip2long(array_pop($ip)))) ? long2ip(ip2long(array_pop($ip))) : err("Invalid IP" ); } else { $ip = $_SERVER['REMOTE_ADDR']; } return $ip;}
echo "$ip $ip1"; ?>
Marsh Posté le 25-08-2006 à 15:11:26
attention à la casse
et $ip est vide vu que aucune valeur affectée
Marsh Posté le 25-08-2006 à 16:00:17
Donc j'ai le script suivant !
Et, avec ça, comment je fais pour resortir la bonne information ? (supermofo)
Merci d'avance !
<?
$ip1=$_SERVER[REMOTE_ADDR];
function valid_ipv4($ip_addr){ $num="([0-9]|1?\d\d|2[0-4]\d|25[0-5])"; $range="([1-9]|1\d|2\d|3[0-2])"; if(preg_match("/^$num\.$num\.$num\.$num(\/$range)?$/",$ip_addr)) { return true; } return false;}function getip(){ if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) ){ $ips = explode(', ', $_SERVER['HTTP_X_FORWARDED_FOR']); $ip = valid_ipv4(long2ip(ip2long(array_pop($ip)))) ? long2ip(ip2long(array_pop($ip))) : err("Invalid IP" ); } else { $ip = $_SERVER['REMOTE_ADDR']; } return $ip;}
?>
Marsh Posté le 25-08-2006 à 16:53:14
Code :
|
Utilise les balises CPP
Marsh Posté le 30-08-2006 à 18:04:30
La solution proposée par supermofo reste contournable avec un bout de script php par exemple, en ajoutant dans le paquet une valeur X-Forwarded-For aléatoire. Ca me semble plus facile de tricher ainsi car on n'a plus à se déco/reco ou changer de proxy toutes les 5 min, ce qui etait tout de meme assez fatiguant.
Marsh Posté le 01-09-2006 à 16:12:50
C'est complètement vrai HTTP_X_FORWARDED_FOR est facilement modifiable. Faire des test avec live http headers pour s'en convaincre.
L'objectif de la fonction postée plus haut était justement de nettoyer les entrées utilisateurs.
L'ip à elle seule n'est pas un identifiant unique par contre la combinaison ip+cookie et id utilisateur semble l'etre un peu plus.
A toi de reflechir !
Marsh Posté le 24-08-2006 à 17:17:28
Bonsoir à tout le monde !!
Je dois comptabiliser les clics sur bannières à raison d'un seul clic par connection internet par tranche de 24H.
Tout clic supplémentaire et toute tentative de fraude dans ce sens ne doit pas être pris en compte.
Comment éviter ces multiclics et multicomptabilisations ? (Cookies, ils peuvent supprimer / ips, ils peuvent changer..)etc
Merci à tous de votre aide !!
Antoine