Installez vos compteurs Web vintage !
wwwcount 2.2 - Compteur d'accès Web (webcounter) CGI en C pour serveur Web sous UNIX/Linux
[Téléchargement] [Guide d'installation] [Exemples d'utilisation]
TheRaphit vous propose de créer vos propres compteurs - c'est gratuit, et illimité !
Vous avez atteint la page du TheRaphit's Web Site dédiée aux webcounters, reliques des sites personnels du 20ème siècle.
Vous découvrirez ici des pièces de musée d'Internet mais pas que, puisque je vous propose ici en téléchargement le programme que j'utilisais en 1997, ainsi qu'un guide de configuration pour pouvoir l'installer sur votre serveur, et afficher ainsi vos propres compteurs vintage sur votre site !
Un webcounter, c'est quoi ?
A la grande époque du Web personnel, presque tous les sites tenus par des particuliers étaient hébergés par divers prestataires (fournisseur d'accès ou hébergeurs communautaires) en mutualisé, c'est à dire que tous les utilisateurs d'un hébergeur donné se partageaient le même serveur.
Seul l'opérateur du serveur avait donc accès à ses logs, pour autant que des journaux d'accès ne fussent tenus... En conséquence les propriétaires des sites hébergés n'avaient pas de moyen de connaître quelle était la popularité de leur site, et surtout quelle était la popularité des différentes pages de leur site.
C'est là que le webcounter entre en scène : il consiste en un petit insert dans le code HTML de la page, qui appelle un programme générant à la volée un bloc de texte ou une image qui indique le nombre de fois que le dit programme a été appelé. Suivant les types de compteurs il était possible de passer des paramètres, afin de disposer de plusieurs comptages différents au sein du même site.
Comme l'indique la page Wikipedia qui leur est dédiée, ceux-ci sont progressivement tombés en désuétude en même temps que l'hébergement mutualisé, et avec l'amélioration des outils d'analyse d'accès aux serveurs Web. Ils ont ensuite presque complètement disparu lorsque le Web s'est professionnalisé et la fin des sites personnels.
Vraiment disparus... Ou pas ?
Après plusieurs jours de recherches acharnées, en suivant un véritable jeu de piste,
j'ai pu retrouver l'un de ces programmes, en l'occurence exactement celui que j'utilisais
à l'époque : wwwcount 2.2. Très sûrement le meilleur programme de compteurs
existant à ce moment-là, en comparaison le leader du moment (digits.com) c'était
too poori. Ce n'est donc pas de la merde que je vous propose ici, sachez le.
Bref, j'ai reconstitué une
archive du code source du programme, que
je peux désormais vous mettre à disposition.
Allez, je vous embarque pour un peu de counter-fun !
Installation du programme
Le programme est destiné à être installé sur un serveur sous UNIX. Il y a cependant un petit écart de 30 ans (une broutille) entre les systèmes pour lesquels il a été conçu et les OS modernes. Vous pourriez donc rencontrer quelques difficultés.
Le programme compile cependant sans problèmes sur une distribution récente de Linux x86_64 (noyau 6.x). Je sais qu'il ne compile pas sous FreeBSD malheureusement. Cependant le programme n'est constitué que d'un exécutable unique, donc après l'avoir compilé sur une machine Linux quelconque, il fonctionnera très certainement sur votre serveur si celui-ci est sous un système UNIX disposant d'une émulation Linux. C'est notamment le cas de FreeBSD et de certaines versions de Solaris.
Après décompression de l'archive, le répertoire du programme doit ressembler à ceci :
Vous devez notamment vérifier que les scripts sont bien exécutables
Voyons maintenant les différentes étapes d'installation :
-
Exécuter
./Count-config: ceci va lancer un script interactif vous demandant quelques informations sur votre système, et notamment où se situe le répertoirecgi-binde votre serveur. Les répertoires d'installation du programme lui-même (sous/usr/local) sont assez logiques, mais vous voudrez peut-être tout mettre sur une partition dédiée, comme un/opt. En effet le répertoiredatacontenant les valeurs des compteurs sera par défaut/usr/local/etc/Counter/datasi vous ne changez rien. Cela pourrait ne pas vous convenir.
Il y a quelques options de configuration importantes que vous allez définir également à cette étape : notamment si vous souhaitez autoriser le programme à créer de nouveaux compteurs automatiquement, ou si vous souhaitez protéger l'accès au compteur via la variableHTTP_REFERER. Cette dernière option est indiquée comme étant expérimentale par l'auteur, car à l'époque il y avait de vieux navigateurs qui n'implémentaient pas le support des referrers. Ce n'est bien sûr plus du tout le cas aujourd'hui. Quoi ? Comment ? Qu'entends-je ? Qu'ouïs-je ?? Un truc qui fonctionne mieux au 21ème siècle qu'au 20ème ?! Eh oui, ça arrive.
-
Exécuter
./configure: étape classique de toute compilation, le script va vérifier que tous les outils nécessaires (notamment le compilateur) sont bien présents sur votre système. Sur une distribution Debian GNU/Linux, vous devez avoir installé le packagebuild-essentialafin de pouvoir passer cette phase.
-
Lancer la compilation avec
make: celle-ci doit se dérouler sans erreurs. S'il y en a une, le programmemakevous l'indiquera très clairement.
-
Exécuter
./Gen-conf: un autre script interactif qui vous assiste dans la rédaction du fichier de configuration du programme, à savoircount.conf. Cela va vous permettre de définir les noms DNS de votre serveur, comprenant en particulier ceux correspondant aux sites sur lesquels vous vouler insérer les compteurs. Ceci afin de constituer, entre autres, une liste d'autorisation d'appel au programme.
-
Installer le programme avec
./Count-install. Pour cela vous devez d'abord passerrootsur votre serveur, ou utilisersudo. Une fois ceci fait, vous devriez trouver le fichier binaireCount.cgidans votre répertoirecgi-binavec les bons droits UNIX (0755).
Avant de passer au vif du sujet, je vous recommande de vérifier que tout est
en ordre au niveau du fichier count.conf mais aussi de la
configuration de votre serveur.
Quelques notes à propos de la configuration
Le fichier de configuration, count.conf, présente trois sections
différentes délimitées par { }. Les dernières lignes du fichier
devraient ressembler à ce qui suit :
#
{
workstation.domaine.tld
192.0.2.69
}
# Auth block
{
serveur.domaine.tld
mymegawebsite.tld
}
# all possible names and IP address of your host can be referred.
{
serveur.domaine.tld
serveur
192.0.2.42
v4only.domaine.tld
v4only
}
#
La première section indique quels sont les hôtes pour lesquels vous souhaitez ignorer les hits : si le programme est appelé depuis ces adresses, il n'incrémentera pas les compteurs stockés sur le serveur.
La deuxième section indique quels sont les sites qui peuvent faire appel
aux compteurs, le programme vérifiant cela grâce au HTTP_REFERER. Indiquez
donc ici, en plus du nom de votre serveur, tous les noms de domaine correspondant
aux sites sur lesquels vous voulez utiliser un compteur.
La troisième section indique enfin les différents noms correspondant au serveur sur lequel est intallé le programme.
Note HTTPS. Vous pouvez interroger le programme indifféremment en HTTP
ou HTTPS, il n'y a rien à préciser dans sa configuration pour cela. Toutefois,
gardez à l'esprit qu'appeler du contenu HTTP depuis une page HTTPS provoque la perte
du HTTP_REFERER. Egalement, les navigateurs pourraient décider de ne
pas charger du contenu considéré comme « non sécurisé » depuis une
page HTTPS, et donc ne pas du tout afficher les compteurs.
Note IPv6 ! Le programme n'a pas été
conçu pour fonctionner en IPv6. Il est donc possible que les noms DNS indiqués dans
le fichier count.conf ne soient pas traités s'ils ont un
enregistrement DNS AAAA, voire même que cela perturbe le
fonctionnement global du programme. Aussi je vous recommande d'appeler
le programme en IPv4 uniquement, via une URL correspondant à un nom DNS ne disposant
que d'un enregistrement de type A. D'où le
v4only.domaine.tld que je fais figurer dans mon exemple.
Cela permettra également de vous assurer que les hits seront bien
ignorés depuis votre poste de travail (première section) car votre
serveur HTTP transmettra alors un REMOTE_ADDR IPv4
au programme.
Dinguerie spéciale 21ème siècle !!
J'ai remarqué que certains navigateurs (mais pas tous) ignorent
le tag HTML <IMG SRC="..."> servant à appeler un compteur lorsque
la chaîne de caractères cgi-bin figure dans l'URL, et que des paramètres
sont passés en fin d'URL (présence d'une séquence "?..."). Ce n'est pas
une blague, le navigateur IGNORE purement et simplement le tag, n'affiche
même pas une image manquante, et ne génère
aucune connexion vers le serveur hébergeant le programme, ce que j'ai vérifié
avec un tcpdump. C'est le cas de Chrome [desktop] et Firefox, mais
pas de Chrome [mobile/Android] (!). Néanmoins vous pouvez blouzer ces navigateurs
en créant un alias de votre répertoire cgi-bin au niveau de votre
serveur HTTP, par exemple scripts ou progs, et à
ce moment-là, ça fonctionne. Ce qu'il ne faut pas faire...
Cela étant dit, il est plus que temps de passer au plat de résistance.
Exemples d'utilisation, et fonctions principales
Count 2.2 est hautement personnalisable. Je vais en décrire ici les fonctions principales avec quelques exemples de rendus.
Les compteurs que je vous présente ici sont des vrais ! Vous pouvez donc recharger cette page afin de voir ce que produit l'incrémentation sur les différents styles. Ah bah oui, vous vous êtes cru sur Mygale ou bien ? Ce n'est pas de l'hébergement de PD ici :D :D :DLe programme génrère des images au format GIF, que vous pouvez insérer dans vos pages comme n'importe quelle image statique, le navigateur du client ne faisant pas la différence. La structure générale de l'appel au programme, en HTML, est celle-ci :
<img src="http://serveur.domaine.tld/repertoire/Count.cgi?fonction1=arg1&fonction2=arg2&...&df=my-counter.dat">
Le programme va prendre en paramètre plusieurs fonctions différentes, lesquels attendent des arguments qui leur sont spécifiques.
Voyons ensemble quelques une de ces fonctions et les arguments sur lesquels vous pouvez jouer.
-
La fonction
dd(digit directory) définit le style des chiffres du compteur, les valeurs possibles de l'argument étant les lettres deAàE.Style
A:
StyleB:
StyleC:
StyleD:
StyleE: -
La fonction
ft(frame thickness) fixe l'épaisseur du cadre du compteur. Il s'agit d'un nombre entier. Notamment, la valeur1permet de ne pas afficher de cadre du tout.Sans cadre (valeur
1) :
Cadre fin - bordure (valeur2) :
Cadre épais (valeur9) : -
La fonction
frgb(frame RGB) vous permet de choisir la couleur du cadre, en spécifiant en paramètre une couleur 24 bits via son codage RGB hexadécimal. Il n'est pas nécessaire de préfixer celui-ci d'un#ou de0x.Exemple avec
FFFFFF(blanc) :
Autre exemple (ici, couleur551A8B) :
Couleur Paladin -F48CBA(j'étais o-bli-gé de la mettre celle-là) : -
Les fonctions
mdetpad(maximum digits et padding) permettent de contrôler le nombre de chiffres que le compteur affichera. Si la valeur actuelle du compteur est inférieure à 10md, alors des zéros devant le nombre seront affichés si la valeur de pad est àT(true). La valeurF(false) désactivera ces zéros non significatifs.Maximum neuf chiffres, avec padding :
Il est intéressant de noter que
Maximum six chiffres (valeur par défaut), mais sans zéros non significatifs :
mdva donc définir le nombre maximum que pourra afficher le compteur, et que l'auteur du programme a limité la valeur demdà10. J'espère donc que vous n'aviez pas prévu de faire plus de dix milliards de hits sur vos pages !
-
Voici maintenant une fonction qui s'avérer fort utile :
incr(increment) permet d'appeler le compteur mais sans l'incrémenter. Cela peut notamment vous servir à afficher le même compteur sur plusieurs pages d'une même section de votre site, sans que cela ne compte un hit à chaque fois. Vous pouvez aussi suivre le compteur d'une page depuis une autre, comme dans mon exemple ci-dessous. Seule la valeurFa un intérêt, puisque la valeurTest celle par défaut, sans utiliser cette fonction.Ce compteur
est celui qui figure sur la page concernant la reconstruction de mon site, il s'incrémentera si celle-ci est visitée, mais pas lors du rechargement de la page que vous lisez actuellement.
-
Fonction moins intéressante mais qui peut avoir son utilité,
lit(literal) permet de fixer la valeur affichée par le compteur, en passant celle-ci en argument. Vous n'êtes pas limité à dix chiffres ! Mais vous ne pouvez afficher que des chiffres.Biiiip ! Biiiip ! Initializing counter...
Affichage de tous les chiffres du styleC(mon préféré), chacun en deux exemplaires : -
J'en arrive enfin à la dernière fonction de l'appel au programme, et bien sûr la plus importante : la fonction
df(data file) indique au programme quel compteur il doit afficher, en appelant un fichier .dat stocké sur le serveur. Il est à noter cependant que ce paramètre est facultatif. Il est par exemple inutile aveclit(voir ci-dessus) mais de manière générale, l'omettre fera afficher au programme un nombre aléatoire. Cela peut servir à des fins de test.Le numéro gagnant de cette semaine est le
Allez-y, misez des sous !! (Oui, plein)!
Et voilà pour l'essentiel.
L'archive du programme contient une documentation
complète (en anglais) si vous souhaitez en savoir davantage. En attendant ces
petits compteurs ont fasciné
visiteurs depuis
le 18 janvier 2025 !