Seohackers netlinking

Générateur de (très) longue traîne

Ecrit par 512banque le vendredi 28 mai 2010 à 14:40 - Catégorie Génération de contenu,Google,Scraping,Scripts PHP

Tenter de se positionner sur des expressions fortement concurrentielles n’est pas forcément un choix judicieux. En effet, certains mots-clés demandent énormément d’efforts et génèrent finalement assez peu de trafic. Le retour sur investissement n’est donc pas au rendez-vous.

Parfois, il vaut mieux tenter de cibler un ensemble de petites requêtes faciles à atteindre, ces requêtes mises bout à bout représentant un trafic non négligeable et dépassant bien souvent les requêtes « star ».

Choisir des expressions de « longue traîne » consiste donc à faire varier l’expression clé principale en utilisant des synonymes et en y ajoutant d’autres mots, tels que la localisation ou d’autres spécificités. Au lieu de chercher à se positionner sur « plombier », on va préférer « plombier dijon » ou « plombier bourgogne » et ainsi de suite pour toutes les grosses villes de france et tous les départements.

Pour trouver des expressions de longue traîne, on peut utiliser notre imagination, mais également les suggestions de google (google suggest) ou la fameuse « roue magique »… Ou bien les deux en même temps !

J’ai ainsi couplé le script de la wonder wheel à celui de google suggest, les deux se trouvant sur Seoblackout 😉

J’ai donc cherché le mot clé « referencement », et en dédoublonné ça m’a donné 650 expressions. Evidemment, il faut faire le tri car on trouvera des expressions aussi peu ciblées que « chiffre d affaires restauration rapide » ou « taux de transformation chimie » mais rien ne vaut une review manuelle pour un travail propre.

Au niveau du script, je sais qu’il existe de nombreuses pistes d’amélioration, mais franchement entre nous… Ca marche et ça me va bien comme ça 🙂

Voici la bête :

<?php header('Content-Type: text/html; charset=UTF-8'); ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <title>Long tail</title>
  <meta http-equiv="content-style-type" content="text/css" />
</head>
<body>
 
<?php
 
// Auteurs du script : Beunwa http://divioseo.fr/ & Tiger http://www.seoblackout.com
// Modifications par 512banque http://www.deliciouscadaver.com
// Url article du script pour bugs, commentaires... : http://www.seoblackout.com/2010/05/28/generateur-de-tres-longue-traine/
//Site Web : http://www.seoblackout.com
 
 
$etape = strip_tags($_GET['etape']);
 
switch($etape) {
 
case '1': ?>
<form action="?etape=2" method="post">
	<table><tr><td>
		Keyword : <textarea name="kw" rows="10">
<?php 
 
if ((isset($_POST['kw'])) && $_POST['kw']!='')
{
	$q=strip_tags($_POST['kw']);
	foreach (google_wheel($q) as $kws) { echo $kws."\n"; }
	flush();
}
else
{
	echo 'Veuillez saisir un mot-clé !';
}
?></textarea>
	</td><td>
		et <textarea name="mix2" rows="10"><?php echo strip_tags($_POST['mix2'])?></textarea>
	</td><td>
		<br />
		Langue : 
		<select name="lang">
			<option value="fr">FR</option>
			<option value="en">EN</option>
		</select>
		<br />
		Profondeur : 
		<select name="depth">
			<option value="1">1</option>
			<option value="2">2</option>
			<option value="3">3</option>
			<option value="4">4</option>
			<option value="5">5</option>
		</select>  
		<br />
		Alphabet :<input type="checkbox" name="alph" />
	</td></tr></table>
	<br />
	<input type="submit" value="Go" />
</form>
 
<?php
break;
case '2': ?>
<form action="?etape=3" method="post">
 
<h3>Dédoublonner et faire le ménage</h3>
<form  action="?etape=3" method="post">
<textarea rows="20" cols="60" name="kw">
<?php if(isset($_POST['kw'])){
	$lang = strip_tags($_POST["lang"]);
	if($lang == '') $lang = "fr"; 
	$depth = strip_tags($_POST["depth"]);
	if($depth == '') $depth = "1";
 
	$kwsd = array();
	$kwsd=explode("\n",trim(strip_tags($_POST["kw"])));
	foreach ($kwsd as $lst) {
		if($lst != "\n"){
			//mots cles simple
			ggSuggest($lst, $lang, $depth);
 
			//mots cles avec compléments
			$kws2 = array();
			$kws2=explode("\n",strip_tags($_POST["mix2"]));
			foreach ($kws2 as $mix2) {
				ggSuggest($lst.$mix2, $lang, $depth);
			}
 
			//alphabet
			if(strip_tags($_POST["alph"]) == "on"){
				$alpha = "a";
				while($alpha != "z"){
					ggSuggest($lst.' '.$alpha, $lang, $depth);
					$alpha = ++$alpha;
				}
			}
		}
	}
 
} ?>
</textarea>
 
	<br />
	<input type="submit" value="Go" />
</form>
 
<?php
break;
case '3':
$keywords = explode("\r\n", $_POST['kw']);
 
		foreach($keywords as $k=>$v) {
		if(preg_match('#^(.*) [\w]$#',$v)) {
		unset($keywords[$k]);
		} }
 
		$keywords = array_unique($keywords);
		?>
		<h3><?php echo count($keywords); ?> expressions uniques générées</h3>
		<p>Pensez à faire le tri ;)</p>
		<?php
 
		foreach($keywords as $k=>$v) {
		echo $v.'<br />';
		}
 
break;
default: ?>
<form action="?etape=1" method="POST">
  Saisir un mot-clé : <input id="kw" name="kw" type="text" size="" /><br />
  <button id="submit" name="submit" type="submit" value="submit">submit</button>
</form>
 
<?php			 
}
 
 
 
function google_wheel($q) {
$res_final = array(); 
$q=urlencode($q);
$search_url="http://www.google.com/search?q=$q&hl=fr&tbo=1&tbs=ww:1";
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_USERAGENT, 'Opera/9.63 (Windows NT 5.1; U; fr) Presto/2.1.1');
	curl_setopt($ch, CURLOPT_URL,$search_url);
	curl_setopt($ch, CURLOPT_FAILONERROR, true);
	curl_setopt($ch, CURLOPT_REFERER, $search_url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
	$res= curl_exec($ch);
	curl_close($ch);
	if ($res) {
		if (preg_match('/"r":\[(.*?)\]}\)/',$res,$matches))
		{		
			$response=str_replace('"','',$matches[1]);
 
			$response2=explode(',',$response);
			$response3='';
			foreach ($response2 as $key => $value) 
			{
				$value2=urlencode($value);
				$search_url2="http://www.google.com/search?q=$value2&hl=fr&tbo=1&tbs=ww:1";
 
				$ch2 = curl_init();
				curl_setopt($ch2, CURLOPT_USERAGENT, 'Opera/9.63 (Windows NT 5.1; U; fr) Presto/2.1.1');
				curl_setopt($ch2, CURLOPT_URL,$search_url2);
				curl_setopt($ch2, CURLOPT_FAILONERROR, true);
				curl_setopt($ch2, CURLOPT_REFERER, $search_url2);
				curl_setopt($ch2, CURLOPT_RETURNTRANSFER,true);
				$res2= curl_exec($ch2);
				curl_close($ch2);
				if ($res2)                                         
				{	
					if (preg_match('/"r":\[(.*?)\]}\)/',$res2,$matches2))
					{		
						$response.=','.str_replace('"','',$matches2[1]);
					}
				}
			}
			$response3=array_unique(explode(',',$response));
			asort($response3);
			foreach ($response3 as $key => $value) 
			{
			$res_final[]=str_replace(array('r2:','[',']'),'',$value);
			flush();
			}
		}
	}
 	return array_unique($res_final);
}
 
function ggSuggest($kw, $lang, $depth = 1, $inc = 1){	
	global $tabKw;
 
	$tabKw[] = $kw;	
    $url = 'http://www.google.com/complete/search?hl='.$lang.'&js=true&qu='. urlencode($kw);
	if (function_exists('curl_init')) {
	$header = array(
        "Accept: text/xml,application/xml,application/xhtml+xml,
		text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
        "Accept-Language: fr-fr,fr;q=0.7,en-us;q=0.5,en;q=0.3",
        "Accept-Charset: utf-8;q=0.7,*;q=0.7",
        "Keep-Alive: 300");
		$ch = curl_init();
	    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
	    curl_setopt($ch, CURLOPT_HEADER, false);
	    curl_setopt($ch, CURLOPT_VERBOSE, true);	
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
	    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
	    curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com/');
	    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)' );
	    curl_setopt($ch, CURLOPT_HTTPHEADER, $header );
	 	curl_setopt($ch, CURLOPT_URL, $url);
		$result=curl_exec ($ch);
		curl_close ($ch);
	} else {
		$result= file_get_contents($url);
	}
	preg_match_all('/\["(.*?)",/si', $result, $kwgoogle, PREG_SET_ORDER);//mot
	preg_match_all('/\,"(.*?)résultats",/si', $result, $nbresult, PREG_SET_ORDER);//nb resultats
 
	if ($kwgoogle=='' || $inc > $depth) {
		return $tabKw;
	}else {
		$ii = 0;
		foreach($kwgoogle as $v){	
			$tk = strip_tags($v[1]);
			if(!in_array($tk, $tabKw)){ 
				$tk = str_replace ('\r',"", $tk);
				$kwr = $nbresult[$ii][1];
				if($kwr == "") $kwr = 0;
				//echo $kwr.' ; '.$tk.'<br />'; je ne veux pas du nombre de résultats
				echo $tk."\n";
				$ii++;                                  
				flush();
				ggSuggest($tk, $lang, $depth, $inc+1); 
			}
		}
	}
	return $tabKw;
}
?>

Pour utiliser cette liste, il vous suffit créer des pages uniques suffisament différentes les unes des autres, une pour chaque mot-clé. Le meilleur moyen de faire ça, c’est d’utiliser un script de spin de votre fabrication ou bien d’acheter un script de content spinning.
Et puisque Tiger m’offre un deuxième lien, j’en profite pour vous présenter le futur site de mon agence de référencement à Chambéry.
Bonne longue traîne à tous 😉

Commentaires (27)

Catégorie: Génération de contenu,Google,Scraping,Scripts PHP

Script pour surveiller l’indexation Google.

Ecrit par lemoussel le vendredi 28 mai 2010 à 8:31 - Catégorie Google,Référencement,Scripts PHP

Je ne vais rien vous apprendre en vous indiquant que le moteur de recherche Google est omniprésent. Il est donc important, lors du lancement d’un nouveau site, de surveiller l’indexation des pages du site dans ce moteur de recherche.

Afin de surveiller le référencement d’une ou de plusieurs pages d’un ou plusieurs sites je vous propose ce petit outil “CheckIndex” qui vous permettra de mieux maitriser l’indexation (ou non) de votre site dans le moteur de recherche Google. Il peut aussi vous permettre de connaître la qualité d’indexation Google d’un concurrent ou d’un partenaire éventuel !

Deux points à noter pour utiliser cet outil. Vous devez avoir PHP 5 et la librairie cURL (libcurl) installés sur votre serveur .

Dans cet article je vous propose de voir comment se servir de CheckIndex et de vous présenter les trois fonctions suivantes que cet outil de suivi d’indexation utilise :

  • get_string_between : Fonction permettant de récupérer le texte contenu entre deux balises.
  • google_search_api : Comme son nom l’indique cette fonction permet d’effectuer la recherche sur Google
  • get_web_page : Récupération d’une page HTML.

get_string_between

<?php
function get_string_between($string, $start, $end)
{
     $string = ' '.$string;
     $ini = strpos($string,$start);
     if ($ini == 0) return '';
     $ini += strlen($start);   
     $len = strpos($string,$end,$ini) - $ini;
     return substr($string,$ini,$len);
}
?>

google_search_api

Utilisation de AJAX API de Google.
L’utilisation de cet API est expliquée en détail sur cette page: Class Reference Google AJAX Search API.

<?php
function google_search_api($args)
{
	$referer = 'http://' . $_SERVER["HTTP_HOST"] . $_SERVER['REQUEST_URI'] . ''; 
	if ( !array_key_exists('v', $args) ) $args['v'] = '1.0';
	$dataGoogleSearch = get_web_page('http://ajax.googleapis.com/ajax/services/search/web?'.http_build_query($args, '', '&'));
	if (stristr($dataGoogleSearch['content'], 'GwebSearch') === false) return false;
	else return true;
}
?>

get_web_page

Fonction de récupération d’une page HTML avec :

  • Sélection d’un User Agent tiré au hasard donc différent pour chaque interrogation.
  • Détermination du Internet media type (mime), à l’origine appelé Type MIME ou juste MIME ou encore Content-type.
  • Détermination du jeu de caractères (charset).

<?php
function get_web_page($url)
{
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Avant Browser/1.2.789rel1 (http://www.avantbrowser.com)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/5.0 (Windows; U; Windows XP) Gecko MultiZilla/1.6.1.0a");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/3.01Gold (Win95; I)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/4.8 [en] (Windows NT 5.1; U)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.4) Gecko Netscape/7.1 (ax)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Opera/7.50 (Windows XP; U)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Opera/7.51 (Windows NT 5.1; U) [en]");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; en) Opera 8.0");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.2b) Gecko/20021001 Phoenix/0.2");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser; Avant Browser; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.0 Safari/532.5");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.310.0 Safari/532.9");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/5.0 (Windows; U; Windows NT 6.0 x64; en-US; rv:1.9pre) Gecko/2008072421 Minefield/3.0.2pre");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 GTB5");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0 )");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Opera/9.25 (Windows NT 6.0; U; en)");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Opera/9.80 (Windows NT 5.2; U; en) Presto/2.2.15 Version/10.10");
	$UAlist[] = array('os' => 'Windows', 'useragent' => "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10");
	$UAlist[] = array('os' => 'Mac', 'useragent' => "Mozilla/2.02E (Win95; U)");
	$UAlist[] = array('os' => 'Mac', 'useragent' => "Mozilla/4.0 (compatible; MSIE 5.15; Mac_PowerPC)");
	$UAlist[] = array('os' => 'Mac', 'useragent' => "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/85.8");
	$UAlist[] = array('os' => 'Mac', 'useragent' => "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8");
	$UAlist[] = array('os' => 'Mac', 'useragent' => "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.302.2 Safari/532.8");
	$UAlist[] = array('os' => 'Mac', 'useragent' => "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3");
	$UAlist[] = array('os' => 'Mac', 'useragent' => "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5");
	$UAlist[] = array('os' => 'Mac', 'useragent' => "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.15");
	$UAlist[] = array('os' => 'Mac', 'useragent' => "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US) AppleWebKit/528.16 (KHTML, like Gecko, Safari/528.16) OmniWeb/v622.8.0.112941");
	$UAlist[] = array('os' => 'Mac', 'useragent' => "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-US) AppleWebKit/528.16 (KHTML, like Gecko, Safari/528.16) OmniWeb/v622.8.0");
	$UAlist[] = array('os' => 'Mac', 'useragent' => "Opera/9.0 (Macintosh; PPC Mac OS X; U; en)");
	$UAlist[] = array('os' => 'Mac', 'useragent' => "Opera/9.20 (Macintosh; Intel Mac OS X; U; en)");
	$UAlist[] = array('os' => 'Mac', 'useragent' => "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/312.5 (KHTML, like Gecko) Safari/312.3");
	$UAlist[] = array('os' => 'Mac', 'useragent' => "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.8 (KHTML, like Gecko) Safari/419.3");
	$UAlist[] = array('os' => 'Mac', 'useragent' => "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10");
	$UAlist[] = array('os' => 'Linux', 'useragent' => "ELinks (0.4pre5; Linux 2.6.10-ac7 i686; 80x33)");
	$UAlist[] = array('os' => 'Linux', 'useragent' => "ELinks/0.9.3 (textmode; Linux 2.6.9-kanotix-8 i686; 127x41)");
	$UAlist[] = array('os' => 'Linux', 'useragent' => "Links (2.1pre15; Linux 2.4.26 i686; 158x61)" );
	$UAlist[] = array('os' => 'Linux', 'useragent' => "Links/0.9.1 (Linux 2.4.24; i386;)");
	$UAlist[] = array('os' => 'Linux', 'useragent' => "Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/0.8.12");
	$UAlist[] = array('os' => 'Linux', 'useragent' => "w3m/0.5.1");
	$UAlist[] = array('os' => 'Linux', 'useragent' => "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.10.1");
	$UAlist[] = array('os' => 'Linux', 'useragent' => "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.4 (KHTML, like Gecko) Chrome/4.0.237.0 Safari/532.4 Debian");
	$UAlist[] = array('os' => 'Linux', 'useragent' => "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.277.0 Safari/532.8" );
	$UAlist[] = array('os' => 'Linux', 'useragent' => "Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.309.0 Safari/532.9");
	$UAlist[] = array('os' => 'Linux', 'useragent' => "Dillo/2.0");
	$UAlist[] = array('os' => 'Unix', 'useragent' => "Mozilla/5.0 (X11; U; SunOS sun4m; en-US; rv:1.4b) Gecko/20030517 Mozilla Firebird/0.6");
	$UAlist[] = array('os' => 'Unix', 'useragent' => "Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.1b3) Gecko/20090429 Firefox/3.1b3");
	$UAlist[] = array('os' => 'Unix', 'useragent' => "Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.9.1) Gecko/20090702 Firefox/3.5");
	$UAlist[] = array('os' => 'Unix', 'useragent' => "Mozilla/5.0 (compatible; Konqueror/3.5; NetBSD 4.0_RC3; X11) KHTML/3.5.7 (like Gecko)");
	$UAlist[] = array('os' => 'Unix', 'useragent' => "Mozilla/5.0 (compatible; Konqueror/3.5; SunOS) KHTML/3.5.1 (like Gecko)");
	$UAlist[] = array('os' => 'Unix', 'useragent' => "Mozilla/5.0 (compatible; Konqueror/4.1; DragonFly) KHTML/4.1.4 (like Gecko)");
	$UAlist[] = array('os' => 'Unix', 'useragent' => "Mozilla/5.0 (compatible; Konqueror/4.1; OpenBSD) KHTML/4.1.4 (like Gecko)");
	$UAlist[] = array('os' => 'Unix', 'useragent' => "Mozilla/5.0 (X11; U; FreeBSD; i386; en-US; rv:1.7) Gecko");
	$UAlist[] = array('os' => 'Unix', 'useragent' => "Mozilla/4.77 [en] (X11; I; IRIX;64 6.5 IP30)");
	$UAlist[] = array('os' => 'Unix', 'useragent' => "Mozilla/4.8 [en] (X11; U; SunOS; 5.7 sun4u)");
 
	$options = array(
		CURLOPT_RETURNTRANSFER => true,    
		CURLOPT_HEADER         => false,   
		CURLOPT_FOLLOWLOCATION => true,     
		CURLOPT_ENCODING       => '',      
		CURLOPT_AUTOREFERER    => true,    
		CURLOPT_CONNECTTIMEOUT => 10,      
		CURLOPT_TIMEOUT        => 10,       
		CURLOPT_MAXREDIRS      => 10,       
		CURLOPT_FAILONERROR    => true,
		CURLOPT_USERAGENT      => $UAlist[array_rand($UAlist)]['useragent'],
        CURLOPT_COOKIEJAR      => 'CookieJar',
        CURLOPT_COOKIEFILE     => 'CookieTxt',		
	);
 
	$ch      = curl_init( $url );
	curl_setopt_array( $ch, $options );
	$content = curl_exec( $ch );
	$err     = curl_errno( $ch );
	$errmsg  = curl_error( $ch );
	$header  = curl_getinfo( $ch );
	curl_close( $ch );
 
 
  preg_match( '@([\w/+]+)(;\s+charset=(\S+))?@i', $header['content_type'], $matches_header );
  preg_match( '@<meta\s+http-equiv="Content-Type"\s+content="([\w/]+)(;\s+charset=([^\s"]+))?@i', $content, $matches_meta );
  if ( isset( $matches_header[1] ) ) 
     $header['mime'] = $matches_header[1];
  else
    if ( isset( $matches_meta[1] ) ) 
		$header['mime'] = $matches_meta[1];
 
  if ( isset( $matches_header[3] ) ) 
     $header['charset'] = $matches_header[3];
  else
     if ( isset( $matches_meta[3] ) ) 
		$header['charset'] = $matches_meta[3];
 
	$header['errno']   = $err;
	$header['errmsg']  = $errmsg;
	$header['content'] = $content;
	$header['charset'] = isset($header['charset']) ? $header['charset'] : 'utf-8';
 
	return $header;
}
?>

Voilà nous avons terminés avec les fonctions. Voici donc le code source du “coeur” de CheckIndex.
Son utilisation en est très simple. Il suffit de passer en paramètre un fichier sitemap au format XML contenant les URL à vérifier.

http://www.monsite.com/CheckIndex.php?sitemap=http://www.monsite.com/sitemap.xml

Pour rappel le fichier sitemap.xml doit être sous la forme :

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="http://www.insolite-du-geek.fr/wp-content/plugins/google-sitemap-generator/sitemap.xsl"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
	<url>
		<loc>URL1/</loc>
	</url>
	<url>
		<loc>URL2/</loc>
	</url>
</urlset>

Si vous voulez vérifier à intervalle régulier, il vous suffit alors d’appeler “CheckIndex” via une tache « cron » et de vous adresser un email contenant les Urls non indexées.

CheckIndex

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CheckIndex</title>
<style type="text/css">
	<!--
	body { font-family: verdana; font-size: 12px; background: #000; color: #fff; }
	a { color: #3399FF; }
	-->
</style>
</head>
<body>
<?php
require 'get_string_between.php';
require 'google_search_api.php';
require 'get_web_page.php';
 
if(function_exists('set_time_limit')) set_time_limit(0);
 
if(isset($_GET['sitemap']))
{	
	$sitemapURL = urldecode($_GET['sitemap']);
	$sitemapdata = get_web_page($sitemapURL);
	$nbURL = substr_count($sitemapdata['content'], '<loc>');
 
	ob_start();
 
	for($idxURL = 1; $idxURL <= $nbURL; $idxURL++)
	{
		 $url = get_string_between($sitemapdata['content'], '<loc>', '</loc>');
		 $sitemapdata['content'] = str_replace('<loc>' . $url . '</loc>', '', $sitemapdata['content']);
 		 $flagIndexed = google_search_api(array("q" => "info:$url"));
		 if ($flagIndexed === true) echo '<span style="color:green;">' . $idxURL . ' ' . $url . '</span><br />';
		 else echo  '<span style="color:orange;">' . $idxURL . ' ' . $url . '</span><br />';
 
		 ob_flush();
		 flush();
 
		 sleep(rand(1, 3));  
	}
 
	ob_end_flush();
}
 
?>
</body>
</html>

Commentaires (14)

Catégorie: Google,Référencement,Scripts PHP



SEO BLACKOUT

Site web dédié aux techniques de référencement et de positionnement de sites web sur Google.

Certaines parties du site sont en accès restreint, ces espaces sont réservés à la SEO Black Hat Team.


Don't Be Evil !