A la demande de @GHBSXR (sorry je m’y ferai jamais) j’ai réalisé un script php qui va vous permettre de vérifier la ‘réputation’ de vos sites via le service WOT (Web Of Trust).
WOT permet via ses plugins chrome ou firefox ou simplement via son site web de vérifier 4 notes attribués par les internautes :
Si vous souhaitez plus d’infos sur ce service je vous renvoi à l’article WOT de Sandrine (avec de la pub pour moi dedans
)
Vous devez pour pouvoir utiliser le script avoir un server avec php + php-curl activé, collez simplement votre liste d’urls (1 par ligne) et le script vous renverra un fichier csv qui contiendra le domaine de l’url + les informations associés sur WOT.
Attention WOT n’attribue des scores que pour les domaines et sous domaines, donc pas besoin de coller 150 urls du meme domaine, ca ne sert à rien.
Voici donc ce script :
<?php
function getDomValue($path, $html){
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xp = new DOMXPath($dom);
$nodeList = $xp->query($path);
foreach($nodeList as $domElement){
return $domElement->nodeValue;
}
return false;
}
function __outputCSV(&$vals, $key, $filehandler) {
fputcsv($filehandler, $vals, ';', '"');
}
function getHeaders(){
$headers = array();
foreach ($_SERVER as $k => $v)
{
if (substr($k, 0, 5) == "HTTP_")
{
$k = str_replace('_', ' ', substr($k, 5));
$k = str_replace(' ', '-', ucwords(strtolower($k)));
$headers[$k] = $v;
}
}
return $headers;
}
function getUrl($u){
global $proxyTab;
if($proxyTab !== false){
$proxy = $proxyTab[rand(0, count($proxyTab)-1)];
}
$head = getHeaders();
$headers = array();
$headers[] = 'Accept: '.$head['Accept'];
$headers[] = 'Accept-Language: '.$head['Accept-Language'] ;
$headers[] = 'Accept-Charset: '.$head['Accept-Charset'];
$headers[] = 'Keep-Alive: '.$head['Keep-Alive'];
$headers[] = 'Connection: '.$head['Connection'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$u);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_TIMEOUT, 15); // times out after Ns
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers );
if($proxyTab !== false){
$proxy = $proxyTab[rand(0, count($proxyTab)-1)];
$proxy = explode(':',$proxy);
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_PROXY, $proxy[0]);
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy[1]);
}
$res = curl_exec( $ch );
$info = curl_getinfo($ch);
$header = preg_replace('#^HTTP.*\n#', '', $res);
$header = substr($header, 0, $info['header_size']);
preg_match_all('#^([^:].+):\s(.+)$#mi', $header, $m);
$header = @array_combine($m[1], $m[2]);
$pattern = "#META http-equiv=['|\"]Refresh['|\"] content=['|\"][0-9]+;url=(.*?)['|\"]#si";
if(preg_match($pattern, $res, $loc)) {
$url = $loc[1];
}else{
$url = $info['url'];
}
return array($res, $info, $url, $header);
}
if(isset($_POST['txt'])){
//$proxyTab = file();
$tab = preg_split('#(\n)#',$_POST['txt']);
$results = array(array('Domain', 'Rank', 'Popularity', 'Trustworthiness', 'Vendor reliability', 'Privacy', 'Child Safety'));
foreach($tab as $t){
$t = trim($t);
if(substr($t, 0, 4) != 'http') $t = 'http://'.$t;
$u = parse_url($t);
$host = $u['host'];
if($t != ''){
$r = array();
$res = getUrl('http://www.mywot.com/en/scorecard/'.$host);
$r['domain'] = $host;
$r['rank'] = getDomValue('//ul[@id="rank"]/li[2]/span[1]', $res[0]);
$r['pop'] = getDomValue('//div[contains(@class, "popularity")]/@class', $res[0]);
preg_match('#.*popularity-([0-9]).*#', $r['pop'], $m);
$r['pop'] = $m[1];
$r['trust'] = getDomValue('//*[@id="reputation-table"]/tbody/tr[2]/td[2]/div[1]/div[1]/div', $res[0]);
$r['rel'] = getDomValue('//*[@id="reputation-table"]/tbody/tr[4]/td[2]/div[1]/div[1]/div', $res[0]);
$r['priv'] = getDomValue('//*[@id="reputation-table"]/tbody/tr[6]/td[2]/div[1]/div[1]/div', $res[0]);
$r['safe'] = getDomValue('//*[@id="reputation-table"]/tbody/tr[8]/td[2]/div[1]/div[1]/div', $res[0]);
$results[] = $r;
}
}
$fp = fopen('php://memory', 'w');
array_walk($results, '__outputCSV', $fp);
rewind($fp);
$output = stream_get_contents($fp);
fclose($fp);
header('Content-type: application/vnd.ms-excel');
header('Content-disposition: attachment; filename="wotexport.csv"');
echo $output;
die();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr-fr">
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>WOT checker</title>
</head>
<body>
<h1>WOT EXTRACTOR</h1>
<p>Collez votre liste d'url dans le champ texte ci-dessous et cliquez sur Go</p>
<form action="" method="post">
<textarea name="txt" style="width:500px;height:300px;"><?php echo $rt; ?></textarea>
<input type="submit" value="Go" />
</form>
</body>
</html>
PS : si vous souhaitez utiliser des proxys alors remplacer la ligne 76 par $proxyTab = array(‘ip1:port’,'ip2:port’);
Ça peut être un critère, qui certes n’a peut-être qu’une représentativité limitée, mais c’est toujours un indicateur de plus, qu’il soit positif ou négatif. Merci pour le partage en tous les cas.
Tu as pris combien de temps pour le script?
Avec le brief de Sandrine et l’analyse de WOT compris : moins de 2h
Merci pour le script et le partage, par contre manque un fin de après le TITLE et un fin de après le FORM pour que le script tourne
c’est corrigé, merci
Ah le HTML a été mangé lors de la publication de mon commentaire.
Bien vu ce script, car on peut avoir des surprises avec WOT sur ses sites.
Perso j’avais viré l’extension WOT dans le navigateur, il gueulait à chaque fois que j’ouvrais google -_-’
Merci pour le script !
Hello
Intéressant, merci pour le partage.
WOT représente un filtre / indicateur de plus. Mais il est encore très peu connu en France. Encore plus chaud à chopper que de likes ou retweets. Je vous propose de voter pour vos sites si vous votez pour les miens, ça nous aidera tous je pense non ? Ce sera en plus l’occasion de vraiment mettre le script en pratique
Après je sais pas si ça vous tente ni comment vous voulez faire pour organiser ça (ceux qui le souhaitent peuvent me contact directement (https://twitter.com/#!/affirencontre / ou contact@affiliation-rencontre.fr).
Merci à GHBSXR (!) et à toi,
Bertrand Masselot