Eviter Fraude Dans la Comptabilisation de Clics

Eviter Fraude Dans la Comptabilisation de Clics - PHP - Programmation

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

Reply

Marsh Posté le 24-08-2006 à 17:17:28   

Reply

Marsh Posté le 24-08-2006 à 17:19:28    

aucune manière sûr à 100% (à moins que les utilisateurs disposent de comptes)


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

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

Reply

Marsh Posté le 24-08-2006 à 17:21:32    

pas au changement d'ip en tout cas


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 24-08-2006 à 17:22:40    

J'espère que quelqu'un aura la clé .. :)

Reply

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...)


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

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


Message édité par soju le 24-08-2006 à 17:27:21
Reply

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 ..

Reply

Marsh Posté le 24-08-2006 à 17:31:26    

fait une recherche alors [:jagstang]


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

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 ?

Reply

Marsh Posté le 24-08-2006 à 17:32:17   

Reply

Marsh Posté le 25-08-2006 à 12:36:47    

Ptit up ..

Reply

Marsh Posté le 25-08-2006 à 12:56:55    

Fais nous part de tes trouvailles.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

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 ?

Reply

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...


Message édité par DarkHope le 25-08-2006 à 13:37:19
Reply

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 ?

Reply

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.


Message édité par DarkHope le 25-08-2006 à 14:01:45
Reply

Marsh Posté le 25-08-2006 à 13:54:18    

Mais c'est bannières, renverront vers ton site ?

Reply

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 ?

Reply

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"   ;)


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 25-08-2006 à 14:11:27    

L'IP pour identifier un visiteur, c'est on ne peut plus incorrect. :o


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

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 ?

Reply

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

Reply

Marsh Posté le 25-08-2006 à 14:16:28    

Là ce n'est pas bête du tout ;)
Merci !

Reply

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.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 25-08-2006 à 14:22:36    

Merci de cette aide précieuse, sircam lol

Reply

Marsh 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 :
  1. function valid_ipv4($ip_addr)
  2. {
  3.         $num="([0-9]|1?\d\d|2[0-4]\d|25[0-5])";
  4.         $range="([1-9]|1\d|2\d|3[0-2])";
  5.         if(preg_match("/^$num\.$num\.$num\.$num(\/$range)?$/",$ip_addr))
  6.         {
  7.                 return true;
  8.         }
  9.         return false;
  10. }
  11. function getip()
  12. {
  13. if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) ){
  14. $ips = explode(', ', $_SERVER['HTTP_X_FORWARDED_FOR']);
  15. $ip = valid_ipv4(long2ip(ip2long(array_pop($ip)))) ? long2ip(ip2long(array_pop($ip))) : err("Invalid IP" ); //safe
  16. }
  17. else {
  18. $ip = $_SERVER['REMOTE_ADDR']; //safe
  19. }
  20. return $ip;
  21. }


 
Sur place ou à emporter ?  :lol:


Message édité par supermofo le 25-08-2006 à 14:40:07
Reply

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 ..

Reply

Marsh Posté le 25-08-2006 à 14:40:44    

ncdetoulouse a écrit :

Merci de cette aide précieuse, sircam lol


[:kiki]
 
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.   [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

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 :
  1. * 10.0.0.0 — 10.255.255.255 (10/8)
  2.     * 172.16.0.0 — 172.31.255.255 (172.16/12)
  3.     * 192.168.0.0 — 192.168.255.255 (192.168/16)
  4.     * 169.254.0.0 — 169.254.255.255 (169.254/16)
  5. //liste incorrecte


 
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


Message édité par supermofo le 25-08-2006 à 16:58:06
Reply

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"; ?>

Reply

Marsh Posté le 25-08-2006 à 15:11:26    

attention à la casse
et $ip est vide vu que aucune valeur affectée

Reply

Marsh Posté le 25-08-2006 à 15:24:14    

$ip1 devrait afficher qq chose en tout cas, non ?

Reply

Marsh Posté le 25-08-2006 à 15:41:58    

attention à la casse

Reply

Marsh Posté le 25-08-2006 à 15:52:17    

J'ai lu ! Et je ne vois pas d'erreur maj / min .. :(

Reply

Marsh Posté le 25-08-2006 à 15:57:20    

Ah si, $_SERVER[REMOTE_ADDR] ^^

Reply

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;}  
?>

Reply

Marsh Posté le 25-08-2006 à 16:53:14    

Code :
  1. mapage.php
  2. function valid_ipv4(...){...
  3. }
  4. function getip(){
  5. ...}
  6. $ip1 = getip();


 
Utilise les balises CPP :)


Message édité par supermofo le 25-08-2006 à 16:59:19
Reply

Marsh Posté le 25-08-2006 à 16:59:16    

Merki :)

Reply

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.


---------------
Sonnerie polyphonique - Sonnerie Hi-Fi - Sonnerie Ultrason  
Reply

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 !

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed