Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

Adresse IP

Aller à la page 1, 2  Suivante
Poster un nouveau sujet Imprimer cette discussion    Forum -> RobotStats - GoogleStats   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
Suede
WRInaute accro
WRInaute accro

Inscrit le: 04 Oct 2002
Messages: 3653
Localisation: Suède

URL permanente de ce messagePosté le : Dim Avr 27, 2003 15:08    Sujet du message: Adresse IP

Bonjour

Est-ce que dans les prochaines versions tu comptes mettre plus de deux champs IP? Il faudrait faire une table supplémentaire (id_moteur,adresse) pour pouvoir avoir autant d'adresse que possible.
Je viens de voir d'autre adresse IP Google sur cette page : http://www.iplists.com/new/
Quelqu'un les a déjà vue dans ses logs?

François
 
Suede Visiter le site web du posteur
WebRankInfo
Administrateur du site
Administrateur du site

Inscrit le: 19 Avr 2002
Messages: 14035
Localisation: Toulouse

URL permanente de ce messagePosté le : Dim Avr 27, 2003 15:42    Sujet du message: Adresse IP

ça semble étonnant, certaines de ces adresses appartiennent à Fujitsu
dans les prochaines versions il faudrait pouvoir donner pour chaque robot une liste de "ranges", par exemple 216.239.32.0 - 216.239.63.255 pour Google
si qqn a une idée pour organiser ça simplement dans des tables MySQL mais surtout dans le formulaire de définition de robot, je suis preneur
 
WebRankInfo Visiter le site web du posteur
Suede
WRInaute accro
WRInaute accro

Inscrit le: 04 Oct 2002
Messages: 3653
Localisation: Suède

URL permanente de ce messagePosté le : Dim Avr 27, 2003 15:57    Sujet du message: Adresse IP

WebRankInfo a écrit:
ça semble étonnant, certaines de ces adresses appartiennent à Fujitsu
dans les prochaines versions il faudrait pouvoir donner pour chaque robot une liste de "ranges", par exemple 216.239.32.0 - 216.239.63.255 pour Google
si qqn a une idée pour organiser ça simplement dans des tables MySQL mais surtout dans le formulaire de définition de robot, je suis preneur


Oui, sans doute. Ils ont aussi les mauvaises adresses pour surfnomore spider.

Pour les plages, il faudrait peut-etre stocker une IP modifié dans tes tavles : 216299032000 à la place de 216.239.32.0 afin de pouvoir faire des opérations mathématiques dessus.
Si tu as une table id_moteur, range_min, range_max
Cela te permet de selectionner simplement le moteur dans la requete MySQL.

Pour le formulaire, peut-etre une boite de texte. Il suffit de passer à la ligne pour chaque nouvelle plage.
Ou bien une insertion en deux étapes: 1) info moteur 2) détection moteur et là, tu peux avoir un formulaire ou tu ajoutes tes plages une par une.

François
 
Suede Visiter le site web du posteur
WebRankInfo
Administrateur du site
Administrateur du site

Inscrit le: 19 Avr 2002
Messages: 14035
Localisation: Toulouse

URL permanente de ce messagePosté le : Dim Avr 27, 2003 16:04    Sujet du message: Adresse IP

oui pour le formulaire je pensais plutot à ta 2eme solution
en fait on définirait un robot en 2 étapes :
1/ comme maintenant = tout sauf les plages d'adresses IP
2/ associer une ou plusieurs plages à un robot sélectionné dans une liste
 
WebRankInfo Visiter le site web du posteur
ortolojf
WRInaute passionné
WRInaute passionné

Inscrit le: 14 Aoû 2002
Messages: 804
Localisation: Paris

URL permanente de ce messagePosté le : Dim Avr 27, 2003 18:52    Sujet du message: Adresse IP

Problème
Tu sélectionnes d'après l'adresse IP, ou le range d'adresse IP, ce qui signifie que tu devrais pouvoir sélectionner rapidement l' enregistrement de la table des ranges d'adresses IP des robots, d'après une adresse IP référence ( celle du visiteur ).

Sous quelle forme ces ranges d'adresse IP devraient-ils figurer dans cette table ?

Si l'on veut transformer une adresse IP en entier, celà donne 4*(65536 ** 2) possibilités, un peu plus de 4 milliards, à supposer que nous restions à la version TCP/IP V4.

Le problème est qu'il faut pouvoir comparer deux adresses IP d'une manière simple, et que l'indexation de ces valeurs d'adresses IP, soit possible.

Si l'indexation n'est pas possible, la table sera parcourue séquentiellement en entier à chaque visite, ce qui ralentit beaucoup le processus.

Bien à toi.

Jean Francois Ortolo
 
ortolojf Visiter le site web du posteur
WebRankInfo
Administrateur du site
Administrateur du site

Inscrit le: 19 Avr 2002
Messages: 14035
Localisation: Toulouse

URL permanente de ce messagePosté le : Dim Avr 27, 2003 19:00    Sujet du message: Adresse IP

je parle de plages d'adresses et non pas de listes d'adresses
ce qui signifie que pour un robot donné, les tests consisteraient simplement à vérifier si l'adresse IP du visiteur fait partie d'une plage d'adresses d'un des robots définis dans GoogleStats
ça ne me semble donc pas un pb en terme d'indexation ou de vitesse ?
 
WebRankInfo Visiter le site web du posteur
Suede
WRInaute accro
WRInaute accro

Inscrit le: 04 Oct 2002
Messages: 3653
Localisation: Suède

URL permanente de ce messagePosté le : Dim Avr 27, 2003 19:45    Sujet du message: Adresse IP

A mon avis, ce n'est pas un probleme
Si le robot 5 a entre autre la plage d'adresse 255.200.60.32 - 255.200.62.125

on aura
(id,range_min,range_max)
5 , 255200060032, 255200062125

et si on a l'adresse 255.200.61.122, elle sera repéré par la requete:

select id from table where range_min <= 255200061122 and range_max >= 255200061122 (ou un truc de ce genre)
Cela ne devrait pas risquer de ralentir trop.

François
 
Suede Visiter le site web du posteur
ortolojf
WRInaute passionné
WRInaute passionné

Inscrit le: 14 Aoû 2002
Messages: 804
Localisation: Paris

URL permanente de ce messagePosté le : Lun Avr 28, 2003 9:05    Sujet du message: Adresse IP

Bonjour
Je suis tout à fait d'accord avec Suede, mais un nombre composé de 12 chiffres, c'est quand même plus élevé que 4 milliards.

Et le langage PHP n'admet pas d'entiers au dessus de 4 giga.

A mon avis, il faudrait avoir un champ pour chaque séquence de deux composantes 0-255, ce qui nous fait deux champs pour une adresse IP en TCP/IP V4, et 3 champs pour une adresse IP en TCP/IP V6, si je crois que les adresses IP en TCP/IP V6, comportent 6 composantes 0-255.

Pour chaque ensemble de deux composantes 0-255 contenues par exemple dans l'array ip_address[2], on aurait le champ correspondant à cet ensemble, serait égal à:
(256 * ip_address[0]) + ip_address[1]

Après, pour les comparaisons, on est obligé de tenir compte des cas d'égalité stricte entre les ensembles, et le critère serait donc:

Supposons qu'en TCP/IP V4 nous ayons une adresse minimale array $min[4] contenant les 4 composantes 0-255, facilement déductibles de l'adresse IP correspondante $address_min, avec un $min = explode(".", $address_min);

Et la même chose avec l'adresse maximale du range des adresses $max = explode(".", $address_max);

On suppose que $address_min <= $address_max.

Soit $adresse l'adresse du visiteur, et on calcule
$ip_address = explode(".", $adresse);.


// Pour infos, mais $rang_min[0]
// et $rang_min[1] sont les deux champs
// de l'adresse minimale, enregistrés
// dans la table $TABLE_ROBOTS.
// Même chose pour $rang_max

$range_min[0] = (256 * $min[0]) + $min[1];
$range_min[1] = (256 * $min[2]) + $min[3];

$range-max[0] = (256 * $max[0]) + $max[1];
$range_max[1] = (256 * $max[2]) + $max[3];

// On calcule les ensembles de composantes
// pour l'adresse IP du visiteur
$range_address = (256 * $ip_address[0]) + $ip_address[1];
$range_address = (256 * $ip_address[2]) + $ip_address[3];


// Et le critère d'appartenance au range
// des adresses IP, serait:

WHERE (($ip_address[0]>$range_min[0])||
(($ip_address[0]==$range_min[0])&&
($ip_address[1]>=$range_min[1]))&&
(($ip_address[0]<$range_max[0])||
(($ip_address[0]==$range_max[0])&&
($ip_address[1]<=$range_max[1]));

Et pour les index, on prend comme champs entre autres les 4 valeurs $rang_min[0], $rang_min[1], $rang_max[0] et
$rang_max[1], qui définissent le range d'adresses
du robot correspondant.

Evidemment, pour TCP/IP V6,
il est nécéssaire de changer d'implémentation, mais
rien ne nous empêche de prévoir déjà
cette option, en rajoutant deux champs supplémentaires
à la table $TABLE_ROBOTS, et de faire
un traitement spécifique de sélection, en fonction
d'une variable de configuration.

Bien à vous.

Jean Francois Ortolo
 
ortolojf Visiter le site web du posteur
ortolojf
WRInaute passionné
WRInaute passionné

Inscrit le: 14 Aoû 2002
Messages: 804
Localisation: Paris

URL permanente de ce messagePosté le : Lun Avr 28, 2003 9:09    Sujet du message: Adresse IP

Excusez-moi
J'ai fait un typo.

Dans la clause WHERE que j'ai indiquée, remplacer

$ip_address[n] par $range_adress[n]
pour tout n.

Merci.

Je suis pressé, faut que je prenne mon bain. Smile

Bien à vous.

Jean Francois Ortolo
 
ortolojf Visiter le site web du posteur
Suede
WRInaute accro
WRInaute accro

Inscrit le: 04 Oct 2002
Messages: 3653
Localisation: Suède

URL permanente de ce messagePosté le : Lun Avr 28, 2003 11:59    Sujet du message: Adresse IP

Juste une question bête d'un néophite en ce qui concerne l'info.
Est ce qu'en condant dans une autre base, type hexa, cela est plus facile pour php?

François
 
Suede Visiter le site web du posteur
ortolojf
WRInaute passionné
WRInaute passionné

Inscrit le: 14 Aoû 2002
Messages: 804
Localisation: Paris

URL permanente de ce messagePosté le : Lun Avr 28, 2003 21:03    Sujet du message: Adresse IP


Béééé
Un entier, pour le coder, il faut des bits ( 0 ou 1 ).

Un octet est un nombre décimal pouvant aller de 0 à 255.

En hexadécimal, un octet va de 00 à FF, ce qui, du point de vue des valeurs numériques, est strictement la même chose qu'en décimal.

Si tu veux un entier composé de 4 valeurs pouvant aller de 0 à 255, celà te donnera un entier pouvant aller de 0 à (256 ** 4) - 1 ou aussi de 0 à (65536 ** 2) - 1. ( Les deux sont équivalents ).

Le problème est que pour la comparaison d'adresses IP, il faut des entiers, car si on transforme en double, ce ne sera plus un entier, et il ne sera plus possible de tester l'égalité entre deux valeurs de type double.

Donc, la solution que j'ai sugérée, pour apparemment complexe qu'elle soit, me paraît la plus adaptée.

D'un autre côté, le fait qu'une adresse IP soit définie par ses composantes (0 - 255), permet le passage facile à TCP/IP V6 , il suffit de prévoir le nombre de champs suffisant, pour définir une adresse IP.

La raison pour laquelle je préconise d'avoir des champs dans la table $TABLE_ROBOTS , qui aillent de 0 à 65535 , est qu'il est plus simple algorithmiquement de traiter des ensembles de valeurs ayant moins de composantes.

En effet, une adresse IP mémorisée de cette manière, n'aura que 2 composantes en TCP/IP V4 , comme je l'ai montré dans mon précédent message.

En gros, la réponse à ta question, c'est: le format hexadécimal n'est qu'une convention de représentation d'une valeur entière, mais ne change rien à sa valeur exprimée en bits ( 8 bits = 1 octet ).

Bien à toi.

Jean Francois Ortolo
 
ortolojf Visiter le site web du posteur
Suede
WRInaute accro
WRInaute accro

Inscrit le: 04 Oct 2002
Messages: 3653
Localisation: Suède

URL permanente de ce messagePosté le : Lun Avr 28, 2003 21:58    Sujet du message: Adresse IP

ortolojf a écrit:

Béééé


J'avais bien dit question bête de néophite Rolling Eyes
 
Suede Visiter le site web du posteur
champignac
WRInaute discret
WRInaute discret

Inscrit le: 13 Déc 2002
Messages: 55

URL permanente de ce messagePosté le : Dim Juil 13, 2003 17:11    Sujet du message: Adresse IP

Juste une precision a propos de la taille des entiers dans php ils font bien 4 octets ce qui permet de faire tenir une pv4, le seule pb est que ces entier sont signe qu'a cela ne tienne:

il suffit pour l'utiliser dans une requete sql de l'afficher en non signe :
sprintf("%u",ip2long($ip)), ensuite les tratment de comparasion peuvent avoir lieu dans mysql. et voila Smile
 
champignac Visiter le site web du posteur
ortolojf
WRInaute passionné
WRInaute passionné

Inscrit le: 14 Aoû 2002
Messages: 804
Localisation: Paris

URL permanente de ce messagePosté le : Dim Juil 13, 2003 19:16    Sujet du message: Adresse IP


Ah.
Et les fonctions de comparaison numérique de PHP vont très certainement interpréter l'entier long théoriquement non signé, en entier long signé, puisque tu dis que c'est le seul type d'entier long supporté par PHP.

Au risque de me faire prendre pour un fou d'informatique, et têtu en plus, je veux souligner que ma solution, nonobstant son apparente ( mais pas réelle ) complexité, a le grand avantage de l'extensibilité très facile à des formats d'adresses IP plus conséquents, comme TCP/IP V6, qui sera prochainement la norme sur Internet.

Qu'y a-t-il de plus beau que de faire un programme, dont on sait qu'il restera compatible avec les standards du futur, au prix simplement du changement de valeur d'une variable de configuration ? Smile

...Faut prévoir, dans la vie.

Bien à toi.

Jean Francois Ortolo

 
ortolojf Visiter le site web du posteur
ortolojf
WRInaute passionné
WRInaute passionné

Inscrit le: 14 Aoû 2002
Messages: 804
Localisation: Paris

URL permanente de ce messagePosté le : Dim Juil 13, 2003 20:58    Sujet du message: Adresse IP


Last but not least...
Mon petit bout de script que j'avais mis quelques post plus haut, a un gros lapsus.

Il faut remplacer les opérateurs de PHP, par les opérateurs du langage SQL.

Donc: || par: OR
et: && par: AND

Et puis, si SQL supporte pas les variables indicées, faut affecter d'abord des variables simples avec les variables indicées, puis effectuer la clause SELECT ... WHERE avec les variables simples.

A part ça et l'autre remplacement déjà mentionné dans mon précédent post, tout baigne dans l'huile.

Avec mon script, plus un choix entre TCP/IP V4 et TCP/IP V6, donc nombre de variables comparées ad hoc, ce choix dépendant d'une variable de configuration simple à modifier sur tout le package, genre: TCP_IP_VERSION=4 ou 6, vous avez un bon exemple d'implémentation qui résistera même à la grêle... Smile et avec la rapidité proverbiale de l'index.

Bien à vous.

Jean Francois Ortolo
 
ortolojf Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> RobotStats - GoogleStats Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 2 - Aller à la page 1, 2  Suivante
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

Autres sujets de discussion :

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort