Salut,
Bon, après mes post sur la façon de gérer le DC avec le droit, en voici un pour vous filer un script fait maison pour détecter du mieux possible le DC d'un texte dans l'index de GG.
Les critiques sont les plus que bienvenue.
... et s'il vous plait et que vous l'utilisez, un petit lien vers mon site ( http://www.an1000.org ) se sera cool, même si c'est loin d'être obligatoire. ;-)
Bon, après mes post sur la façon de gérer le DC avec le droit, en voici un pour vous filer un script fait maison pour détecter du mieux possible le DC d'un texte dans l'index de GG.
Les critiques sont les plus que bienvenue.
... et s'il vous plait et que vous l'utilisez, un petit lien vers mon site ( http://www.an1000.org ) se sera cool, même si c'est loin d'être obligatoire. ;-)
Code:
<?php
//*****************************************************************
// La recherche exacte (entre guillemet) d'un texte sur google
// ne donnant pas les mêmes réponses qu'en passant par l'Ajax Google API,
// on utilise les deux.
//
//La recherche direct entre guillemet permet de récupérer les sites
// dont le duplicate content et complet. (limité à 10 résultats)
// L'utilisation de l'API permet de trouver le duplicate content partiel
// sans parser de pages de résultats.
//
//L'API ne permet que 100 requête par jour. Au dela il faut payer
//http://code.google.com/intl/fr/apis/customsearch/v1/overview.html#Pricing
//
//A vous de l'intégrer directement à vos site avec récupération des textes
// depuis vos bdd.
//
//Ca vous plait ? Bah faites moi un lien : http://www.an1000.org/
//*****************************************************************
header("Content-Type: text/html; charset=UTF-8");
if(isset($_POST['text_origin']))
{
$text_origin = stripslashes($_POST['text_origin']);
// Détection en parse direct sur la requête exacte (entre guillemet)
$url_parse = "https://www.google.fr/search?q=".urlencode('"'.$text_origin.'"')."&hl=fr&prmd=ivns&filter=0";
if ($text_origin)// Récupération des données
{
$fp = fopen($url_parse,"r");// On parse la page
if ($fp != FALSE)
{
while (!feof($fp))
{
$body .= fgets($fp, 4096);
}
}
if(strpos($body, 'yellow_warning.gif') == '')// On vérifie si des résultats existent
{
if(strpos($body, '<h3 class="r"><a href="http://') != '')//On vérifie que les limiteurs existent
{
preg_match_all('#<h3 class="r"><a href="http://(.*)"#Uis', $body, $listing);// On extrait les url
$nb_res = sizeof($listing[1]);// Comptage des tubes de $listing
$url_DC = "<h2>Pages plagiant le texte</h2><table border=0>";
for ($i=0; $i < $nb_res; $i++)
{
$url_DC.= "<tr><td style=\"width:50px;text-align:right;color:red;font-weight:bold;\">100,00%</td><td style=\"width:10px;\"></td><td><a href=\"http://".$listing[1][$i]."\">".$listing[1][$i]."</a></td></tr>";
}
}
else
{
$nook_code = "Google a modifié son code source. L'expression réglière du preg_match_all doit être modifié !";
}
}
if ($fp != FALSE){fclose($fp);}
if (!isset($listing))
{
$listing[1][0] = "no-url";
$url_DC = "<h2>Pages plagiant le texte</h2><table border=0>";
}
for ($boucle=0;$boucle<=10;$boucle++)
{
$start = $boucle*8;
$url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=".urlencode($text_origin)."&start=".$start."&rsz=large";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($ch, CURLOPT_REFERER, "http://www.castlemaniac.com/");
$body = curl_exec($ch);
curl_close($ch);
$json = json_decode($body, true);// Tableau associatif.
$nb_results_json = sizeof($json['responseData']['results']);// Nb de tube dans "results"
for ($i=0; $i < $nb_results_json; $i++)// Extraction "content"
{
$content = $json['responseData']['results'][$i]['content'];
$url_page_DC = str_replace("http://", "", $json['responseData']['results'][$i]['url']);
if(!in_array($url_page_DC, $listing[1]))
{
//Traitement de "content"
$content_origin = strip_tags($content);// Suppression des tags <b>
$content_origin = preg_replace('#[.]#', '', $content_origin);// Suppression des .
$content_origin = preg_replace('#[\s]+#', ' ', $content_origin);// Suppression des espaces multiples
$content_origin = preg_replace('#^[\s]|[\s]$#','',$content_origin);// Suppression des espaces en début et fin de chaine
$nb_word = explode(" ", $content_origin);// Mise des mots dans un tableau
$nb_word_content_origin = sizeof($nb_word);// Comptage des mots
// Traitement du texte en gras de "content"
$text_bold = "";
preg_match_all('#<b>(.*)</b>#Uis', $content, $bold);// Récupération du texte en gras
$nb_result_bold = sizeof($bold[1]);// Nombre de tube dans $bold
for ($j=0; $j < $nb_result_bold; $j++)// Mise en commun des tubes et nettoyage
{
$bold[1][$j] = preg_replace('#[.]#', '', $bold[1][$j]);// Suppression des .
if (!empty($bold[1][$j]))$text_bold.= $bold[1][$j]." ";//Mise des résultat dans une seule variable
}
$text_bold = preg_replace('#[\s]+#', ' ', $text_bold);// Suppression des espaces multiples
$text_bold = preg_replace('#^[\s]|[\s]$#','',$text_bold);// Suppression des espaces en début et fin de chaine
$nb_word = explode(" ", $text_bold);// Mise des mots dans un tableau
$nb_word_text_bold = sizeof($nb_word);// Comptage des mots
$taux = round(($nb_word_text_bold*100)/$nb_word_content_origin,2);
$tab_url_DC_partiel[$url_page_DC] = $taux;
}
}
if ($nb_results_json < 8)break;// Limitation des requêtes si réponse vide.
}
arsort($tab_url_DC_partiel, SORT_NUMERIC);// Classement décroissant du taux
foreach($tab_url_DC_partiel as $key=>$val)
{
if ($val == 100)$style = "color:red;font-weight:bold;";// Style du tableau
elseif ($val < 100 && $val >= 50)$style = "color:red;";// Style du tableau
else $style ="";// Style du tableau
$val = number_format($val, 2, ',', ' ');// Mise ne forme du taux
$url_DC.= "<tr><td style=\"width:50px;text-align:right;".$style."\">".$val."%</td><td style=\"width:10px;\"></td><td><a href=\"http://".$key."\">".$key."</a></td></tr>";
}
$url_DC.= "</table>";
}
}
?>
<!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" />
</head>
<body>
<form action="" method="post">
<label>Phrase test :</label><br />
<input type="text" name="text_origin" />
<input type="submit" name="submit" value="Ok" />
</form>
<?php
if(isset($_POST['text_origin']))
{
?>
<h1 style="text-align:center;">Détection du DC dans l'index Google</h1>
<cite>Texte à identifier</cite><blockquote style="padding:5px;margin:10px;border:1px red dotted;background:aliceblue;font-weight:bold;"><?php echo $text_origin; ?></blockquote>
<?php if (!empty($nook_code))// Alerte
{
?>
<div style="text-align:center;padding:5px;margin:10px;border:1px red solid;background:aliceblue;font-weight:bold;font-color:red;"><?php echo $nook_code; ?></div>
<?php
}
?>
<?php echo $url_DC; // Affichage tableau ?>
<?php
}
?>
</body>
</html>