Informations :
Dates
- Publish : : Friday 22 january 2021
- Modification : Friday 22 january 2021
- 2054 views
Download the file(s) :
Share :
J'ai écris un script PHP qui récupère quelques variables sur la page AWStats d'un site Web (les statistiques Web).
Le script est le suivant :
Récupère les variables principale déjà analysées, auditées grâce au script AWStats grâce à la fonction awstats_resume
Script avec 130 lignes
001function awstats_resume($website, $year, $month = null) { 002 003 $month = isset($month) ? $month : 'all'; 004 005 $directoryTmp = '/var/pro/web_sites/lab3w_fr/admin/tmp/'; 006 $file_year = $website.'-'.$year; 007 $file = 'awstats_'.$file_year.'.php'; 008 $secondes = '1800'; // 30min 009 /* 010 echo '<br/>COURANT : '.mktime(); 011 echo '<br/>MODIFIE : '.filemtime($directoryTmp.$file).''; 012 echo '<br/>LE CALCUL : '.((filemtime($directoryTmp.$file) + $secondes) - mktime()).''; 013 echo '<br/>A MODIF : '.(filemtime($directoryTmp.$file) + $secondes).''; 014 015 echo '<br/>'.$directoryTmp.$file; 016 */ 017 018 if( (filemtime($directoryTmp.$file) + $secondes) <= mktime()) { 019 //echo '<br/>'.'On reecrit le fichier'; 020 021 //exit; 022 023 $url ='http://www.zw3b.fr/pub/AWStats/awstats.pl?framename=mainright&month='.$month.'&year='.$year.'&output=main&config='.$website.''; 024 $contents = file_get_contents($url); 025 026 if(isset($contents) && !empty($contents)): 027 if(preg_match_all("/.{1,$s}(?=W+)/", $contents, $lines) !== false) { 028 029 $result['config']['caption'] = 'Awstats'; 030 $result['config']['value'] = $website; 031 032 $find_log = false; 033 034 $find_report = false; 035 $line_report = null; 036 037 $find_stats = false; 038 $line_stats = null; 039 040 for ($i=0; $i < count($lines[0]); $i++) { 041 042 043 if($find_report == false && preg_match("/Reported period/", $lines[0][$i], $matches)) { 044 //echo '<br/>LINE Reported period '.$i; 045 046 $find_log = true; 047 048 //$find_report = true; 049 $line_report = $i; 050 051 preg_match_all("/(.*)</td>/Ui", $lines[0][$i], $period); 052 053 $result['period']['caption'] = trim(str_replace(array('<tr bgcolor="#ECECEC">', '<td class="aws">'), ' ', $period[1][0])); 054 055 } 056 057 if($line_report !== null) { 058 059 preg_match_all("/(.*)</td>/Ui", $lines[0][($line_report+1)], $title); 060 061 $result['period']['value'] = trim($title[1][0]); 062 063 $line_report = null; 064 } 065 066 if($find_stats == false && preg_match("/Unique visitors/", $lines[0][$i], $matches)) { 067 //echo '<br/>LINE STATS '.$i; 068 069 $find_stats = true; 070 $line_stats = $i; 071 072 preg_match_all("/<td(.*)>(.*)</td>/Ui", $lines[0][$i], $caption); 073 074 $result['UV']['caption'] = trim($caption[2][1]); 075 $result['NV']['caption'] = trim($caption[2][2]); 076 $result['P']['caption'] = trim($caption[2][3]); 077 $result['H']['caption'] = trim($caption[2][4]); 078 $result['B']['caption'] = trim($caption[2][5]); 079 080 } 081 082 if($line_stats !== null) { 083 084 preg_match_all("/<td(.*)>(.*)</td>/Ui", $lines[0][($line_stats+1)], $value); 085 086 $pattern = array('<br />', '<b>', '</b>', ''', '<td>', '</td>', '<= ', 'Exact value not available in 'Year' view'); 087 $replace = array(' ', '', '', ''', '', '', '', ''); 088 089 $value[0][1] = trim(str_replace($pattern, $replace, $value[0][1])); 090 $result['UV']['value'] = explode(' ', $value[0][1]); 091 092 $value[0][2] = trim(str_replace($pattern, $replace, $value[0][2])); 093 $result['NV']['value'] = explode(' ', $value[0][2]); 094 095 $value[0][3] = trim(str_replace($pattern, $replace, $value[0][3])); 096 $result['P']['value'] = explode(' ', $value[0][3]); 097 098 $value[0][4] = trim(str_replace($pattern, $replace, $value[0][4])); 099 $result['H']['value'] = explode(' ', $value[0][4]); 100 101 $value[0][5] = trim(str_replace($pattern, $replace, $value[0][5])); 102 $result['B']['value'] = explode(' ', $value[0][5]); 103 104 $line_stats = null; 105 } 106 107 108 //echo "[$i] {$lines[0][$i]}n"; 109 } 110 111 112 113 if($find_log == true && isset($result) && is_array($result) && $year == date('Y') ) 114 awstats_resume_write($result, $year); 115 116 } 117 118 endif; 119 120 return isset($result) ? $result : null; 121 122 123 } 124 125 126} 127 128# Exemple pour voir le résultat 129//$awstats = awstats_resume('www.zw3b.fr', '2021', $month = null); 130
Cette function awstats_resume
récupère des variables sur la page concernant tout les mois de l'année 2021 du site Webwww.zw3b.frwww. brut.
L'URL est : AWSTtats/awstats.pl?framename=mainright&month=all&year=2021&output=main&config=www.zw3b.fr
Je récupère les variables : Unique visitors, Number of visits, Pages Views, Hits et Bandwidth.
En ligne , grâce à la fonction
awstats_resume_write
je stock les variables dans un fichier pour pouvoir les récupérer facilement (et surtout ne pas le faire si l'année est passée (n'est pas l'année courante).
Ecriture dans un fichier grâce à la fonction awstats_resume_write
Script avec 69 lignes
001function awstats_resume_write($result, $year = null) { 002 003 $year = isset($year) && !empty($year) ?$year : date('Y'); 004 005 $directoryTmp = '/var/pro/web_sites/lab3w_fr/admin/tmp/'; 006 007 $website = $result['config']['value']; 008 009 $file_year = $result['config']['value'].'-'.$year; 010 011 //echo '<br/>Le fichier <code class="code">'.$directoryTmp.'awstats_'.$file_year.'.php</code>'; 012 //if(!file_exists($directoryTmp.'awstats_'.$file_year.'.php')) 013 { 014 015 $write = '<?php'."n"; 016 017 $write.= '/********************************************************************'."n"; 018 $write.= ' *'."n"; 019 $write.= ' * WebSite : '.$website.''."n"; 020 $write.= ' * Description : Resume des Statistiques Annuelle (AWStats)'."n"; 021 $write.= ' * File : awstats_'.$file_year.'.php'."n"; 022 $write.= ' * Date : '.date('Y/m/d H:i:s')."n"; 023 $write.= ' *'."n"; 024 $write.= ' ************************************/'."nn"; 025 026 $write.= '// STATS -----------------------------------------------------------'."n"; 027 $write.= '$result[''.$website.''][''.$year.'']['config']['caption'] = ''.$result['config']['caption'].'';'."n"; 028 $write.= '$result[''.$website.''][''.$year.'']['config']['value'] = ''.$result['config']['value'].'';'."n"; 029 030 $write.= '$result[''.$website.''][''.$year.'']['period']['caption'] = ''.$result['period']['caption'].'';'."n"; 031 $write.= '$result[''.$website.''][''.$year.'']['period']['value'] = ''.$result['period']['value'].'';'."n"; 032 033 $write.= '$result[''.$website.''][''.$year.'']['UV']['caption'] = ''.$result['UV']['caption'].'';'."n"; 034 $write.= '$result[''.$website.''][''.$year.'']['UV']['value'] = '.var_export($result['UV']['value'],1).';'."n"; 035 $write.= '$result[''.$website.''][''.$year.'']['NV']['caption'] = ''.$result['NV']['caption'].'';'."n"; 036 $write.= '$result[''.$website.''][''.$year.'']['NV']['value'] = '.var_export($result['NV']['value'],1).';'."n"; 037 $write.= '$result[''.$website.''][''.$year.'']['P']['caption'] = ''.$result['P']['caption'].'';'."n"; 038 $write.= '$result[''.$website.''][''.$year.'']['P']['value'] = '.var_export($result['P']['value'],1).';'."n"; 039 $write.= '$result[''.$website.''][''.$year.'']['H']['caption'] = ''.$result['H']['caption'].'';'."n"; 040 $write.= '$result[''.$website.''][''.$year.'']['H']['value'] = '.var_export($result['H']['value'],1).';'."n"; 041 $write.= '$result[''.$website.''][''.$year.'']['B']['caption'] = ''.$result['B']['caption'].'';'."n"; 042 $write.= '$result[''.$website.''][''.$year.'']['B']['value'] = '.var_export($result['B']['value'],1).';'."n"; 043 044 $write.= '//------------------------------------------------------------------'."nn"; 045 046 $write.= "n".'?>'; 047 048 if( file_exists($directoryTmp.'awstats_'.$file_year.'.php') ) { 049 //echo ' existe '; 050 $fp = @fopen($directoryTmp.'awstats_'.$file_year.'.php', "w+"); 051 } else { 052 //echo ' n'existe pas '; 053 //echo ' --→ on le cree (true)'; 054 $fp = @fopen($directoryTmp.'awstats_'.$file_year.'.php', "x+"); 055 } 056 057 //echo ' --→ on ecrit'; 058 //echo fputs($fp, $write) ? ' (true)<br/>' : ' (false)<br/>'; 059 060 @fputs($fp, $write); 061 062 @fclose($fp); 063 064 @chmod($directoryTmp.'awstats_'.$file_year.'.php', octdec("664")); //exit; 065 @chgrp($directoryTmp.'awstats_'.$file_year.'.php', "1000"); //exit; 066 067 } 068 069}
La fonction awstats_resume_write
écrit tout simplement un fichier dans un répertoire définit, ici /var/pro/web_sites/lab3w_fr/admin/tmp/
.
Lecture du fichier en comptabilisant
Script avec 34 lignes
001function awstats_resume_read_file($website) { 002 003 $directoryTmp = '/var/pro/web_sites/lab3w_fr/admin/tmp/'; 004 $dirhandle = opendir($directoryTmp); 005 006 while(($file = @readdir($dirhandle)) !== false) 007 { 008 if (($file != '.') && ($file != '..') && (substr("$file", 0, 1) != '.')) 009 { 010 $currentfile = $directoryTmp.''.$file; 011 $currentfilefake = '/'.$file; 012 013 014 if (filetype($currentfile) != 'dir' && preg_match("/awstats_".$website."/Ui", $currentfile, $match)) 015 { 016 include ''.$currentfile; 017 018 //echo $currentfile.'<br/>'; 019 } 020 021 } 022 023 } 024 025 asort($result[$website], SORT_REGULAR); 026 krsort($result[$website]); 027 028 return isset($result) ? $result : null; 029 030} 031 032# Affichage des stats pour toutes les années d'un site, d'une configuration 033//$awstats = awstats_resume_read_file('www.zw3b.fr'); 034//echo '<code class="code">'.print_r($awstats,1).'</code>';
La fonction awstats_resume_read_file
, retourne un tableau PHP (array) avec les variables classées par années.
J'ai fais une page AWStats ici html, qui peut vous donnez un exemple de ce que cela peut représenter au final :)
Note de Moi-même du 20220214 : Je vous envoie mon script PHP Source html - c'est plus simple - et tout fait :) (script à l'arache)..
- Il n'y a que la variable
$website
et$directoryTmp
à changer me s'emble t'il :)
Le plus important est de fermer vos pages AWStats.pl ou plutôt de limiter à votre IP personnelle.
Il ne faut surtout pas afficher les statistiques au public dont l'adresse IP des internautes - pour les lois du RGPD Règlement général sur la protection des données Européenne.
Sur WebRankInfo un sujet flipant : En prison pour avoir utilisé Google Analytics !!! html
Pour essayer d'apporter des solutions aux internautes qui fréquentent WebRankInfo html, Olivier Duffez a publié ce matin une liste d'outils de web analytics compatibles RGPD, sans cookies ou sans consentement nécessaire html. Autres que Google Analytics, vous l'aurez compris, Olivier Duffez nous signale ;)
Note de Moi-même du 20220212 - TODO :
Il faudrait faire un script qui récupère les variables directement dans les fichiers type /var/lib/awstats/awstats022022.www.domain.tld.txt
- Comment-faire html, OS GNU/Linux, Serveurs html : Howto Apache : Configurer AWStats html
Cordialement,
Romain
Liens Web :