Trouver les backlink dans une page
Classé dans : Programmation
Un petit script pour vérifier la présence de vos liens dans une pages.
Il existe de nombreuses raisons de vouloir vérifier la présence de liens pointant vers votre site sur une page donnée. Vous pouvez par exemple vérifier que vos partenaires continue de jouer le jeu et n’ont pas retirer votre lien discrètement.
Voici un petit script qui vous donnera la base pour détecter la présence d’un lien dans une page donnée.
<?php
//retourne un tableau comprenant l'etat de la page (200,404,301,etc..)
//et le contenu de la page
function scanPage($url) {
$url = $url;
$useragent = "Mozilla/5.0";
//IL FAUT MODIFIER LE REFERER
$referer = $url;
//Initialise une session CURL
$ch = curl_init();
//on fournis l'url
curl_setopt($ch,CURLOPT_URL,$url);
//on recupere les header
curl_setopt($ch,CURLOPT_HEADER,1);
//on limite a 30 sec
curl_setopt($ch,CURLOPT_TIMEOUT,30);
//on donne un user agent bidon
curl_setopt($ch,CURLOPT_USERAGENT, $useragent);
//On passe un referrer ici on passe la même page $url
curl_setopt($ch,CURLOPT_REFERER, $referer);
//on récupère le contenu de la page dans une chaine
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//on execute le curl
$out['contentPage']=curl_exec($ch);
//on récupère le code http renvoye
$infoUrl=curl_getinfo($ch);
$out['etat']=$infoUrl['http_code'];
return $out;
}
//recherche le liens dans la page donnee
function recupLink($contentPage,$myUrl) {
$motif='`<a href="'.$myUrl.'"([^>]*)>([^<]*)</a>`i';
preg_match_all($motif,$contentPage,$linkResult);
return $linkResult[0];
}
//Url de la page à scanner
$urlToScan="http://www.blog.manit4c.com/";
//Url à trouver
$myUrl="http://www.blog.manit4c.com";
$scanPage=scanPage($urlToScan);
$allLink=recupLink($scanPage['contentPage'],$myUrl);
echo "<pre>";
print_r($allLink);
echo "</pre>";
/*
A vous de trouver quoi faire avec ce tableau
*/
?>
Il suffit de modifier la variable $urlToScan par la page que vous désirez scanner et la variable $myUrl par l’url que vous recherchez. Vous obtiendrez au final un tableau qui vous indiquera la forme du ou des liens trouvez. Si jamais le tableau est vide c’est qu’aucun lien n’a été détecté, il ne vous reste plus qu’à sévir :).
Amélioration:
Après réflexion et grâce au commentaire de Damien je vous propose de remplacer le motif présent dans le code par celui-ci. Ca devrait mieux fonctionner avec :).
‘`<a(.*)href=(”|\’)’.$myUrl.’(”|\’)([^>]*)>([^<]*)</a>`i’;
Un outil
J’ai développé un petit outil qui vous permettra de vérifier la présence de backlink ou pas
- Permalien
- maniT4c
- 16 oct 2008 4:01
- Commentaires (5)

16 octobre 2008 à 16:08
Et si tu a href=’url’ ?
Et si tu a des paramètres avant le href ?
Et si c’est <A href … ?
Une regex prenant ces éléments en compte (mais qui ne se veut absolument pas infaillible) :
$regex = ‘##is’;
16 octobre 2008 à 16:12
La même regex en escapé puisque tu ne le fait pas :
$regex = ‘#<[aA](.*?)(\s)*(href|HREF)(\s)*=(\s)*[\"|\'](.*?)[\"|\'](.*?)>#is’;
P.S. : pas de s à “page” avec la tournure avec laquelle tu a tourné ton titre.
16 octobre 2008 à 16:27
@damien merci pour ton commentaire et pour la faute d’orthographe :).
Tu as raison sur deux points je n’ai pas prit en compte le fait qu’il soit possible de mettre des paramètres avant le href. Idem pour les simples quotes qui ne sont pas prit en charge.
Par conte pour ce qui est des majuscules l’option “i” à la fin de mon regexp devrait en ternir compte car la recherche devient insensible à la casse.
Donc après avoir prit en compte tes remarques je propose ça comme regexp:
‘`<a(.*)href=(”|\’)’.$myUrl.’(”|\’)([^>]*)>([^<]*)</a>`i’;
11 février 2009 à 1:12
Attention aussi au cloacking, certains petits malins s’en sortent tres bien avec ca. Il font disparaitre vos backlink suivant le user agent qui passe sur le site.
31 mars 2009 à 22:14
merci pour l’info….salutations