Uno script Backlink Checker in PHP

di  Antonio Coschignano, lunedì 21 dicembre 2009
Esistono diversi modi per rilevare il numero di backlink che puntano ad una pagina web. Su internet sono presenti molti tools online che consentono di farlo. Quello che è importante chiedersi penso sia l'affidabilità di questi tools e le fonti a cui attingono per reperire i risultati. I motori di ricerca sono gli unici strumenti in grado di darci delle risposte più o meno precise. Sia Google che Yahoo forniscono il comando 'link:' seguito dal nome della pagina web di cui si vogliono conoscere i backlink. La sintassi è la seguente:
link:www.example.com
Questo comando purtroppo non è molto affidabile nel caso di Google che ritorna i risultato in maniera quasi casuale e non completa. Mentre sembra che un certo grado di affidabilità ci viene fornita da Yahoo anche se aggiorna i risultati molto lentamente. In quest'articolo vedremo appunto una libreria php per calcolare e visualizzare i backlink di una pagina web in maniera automatica utilizzando le API Yahoo Site Explorer. Ciò significa che non è indispensabile costruire dei parser in grado di estrarre dalle SERP le url, ma semplicemente invocare un web service di yahoo che ci invia dei risultati sia in XML, JSON oppure direttamente in PHP tramite la serialiazzazione. Aggiungo che molti tools presenti su internet fanno uso di questo strumento.

Yahoo API Site Explorer

Prima di addentrarci nell' utilizzo della libreria php bisogna procurarsi l'API key di Yahoo, che ci consente di utilizzare il servizio. Innanzitutto bisogna possedere un account yahoo e andare alla pagina Yahoo Search Web Services ed effettuare la richiesta tramite il link Get an App ID come mostrato in figura:

Yahoo Api Page

Ci verrà fornita una chiave alfanumerica che il nostro script php utilizza per accedere alle funzioni di Yahoo. Questa tipologia di servizio ci consente di ottenere:
  • Il numero totale di backlink
  • La lista dei primi 1000 backlink
  • Url e titolo della pagina di ogni backlink contenuto nella lista
La lista dei backlink ci viene restituita con massimo 100 url per volta. Mi spiego meglio, se abbiamo una pagina web che ha più di 1000 backlink, il servizio ci restituisce al massimo 1000 risultati, da estrarre 100 per volta. Esiste un limite di 5000 richieste al giorno per indirizzo IP.

La libreria PHP

La libreria che vedremo è composta da due classi :
  • class SimpleBacklinkChecker
  • class EntryLink
La classe SimpleBacklinkChecker implementa al suo interno tutto il meccanismo di invocazione del web service. Per utilizzare la classe bisogna passare al costruttore l'API Key che abbiamo richiesto e l'url su cui effettuare la query per calcolare i backlink:
$api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$url = "http://www.example.com";
$backlink = new SimpleBacklinkChecker($api_key, $url);
Il passo successivo è settare alcuni parametri per il reperimento dei backlink, tipo se desideriamo includere anche i link interni del sito della pagina in questione oppure no. Per questo settaggio basta richiamere il seguente metodo:
$backlink->setOmitInlinks('none');
Il parametro 'none' indica che vogliamo solo i backlink esterni al sito, mentre se volgiamo includere anche quelli interni basta specificare 'domain'. Adesso, per sapere il numero totale dei backlink basta richiamare questo metodo:
$backlink->getBacklinks();
Questo metodo ritorna il numero totale di backlink che puntano alla pagina. Mentre per quanto riguarda la lista degli url invochiamo invece il metodo:
$entries = $backlink->getListBacklink();
La variabile $entries è un array di oggetti di tipo EntryLink, che in poche parole incapsula i link con i relativi attributi in un semplice oggetto. Un EntryLink e composto da tre attributi:
  • Url: l'url completo del backlink
  • Title: il titolo della pagina del backlink
  • ClickUrl:URL linking
Questi attributi sono accessibili rispettivamente con i metodi getUrl(), getTitle(), getClickUrl(). Come accennavo prima, la lista dei backlink, ci viene ritornata su diverse interrogazioni, con un massimo di 100 link per volta, settando quindi ad ogni chiamata la posizione corrente. Ad esempio, immaginiamo di avere un URL che ha 200 backlink e vogliamo accedere a tutta la lista, possiamo procedere in questo modo:
$backlink->setMaxResult(100);
$entries1 = $backlink->getListBacklink();
$backlink->setStart(101);//n+1
$entries2 = $backlink->getListBacklink();
Questo è il meccanismo per accedere via via a tutta la lista. Comuqnue la classe supporta ancora un altro metodo che in automatico riassume questa procedura e ci ritorna la lista completa:
$entryes = $backlink->getAllBacklink();
Questo metodo in poche parole effettua all'interno di un ciclo for tutte le chiamate e fonde i diversi risultati in un unico array. Adesso per concludere vediamo un esempio completo per stampare tutti i backlink relativi ad una pagina web:
$api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$url = "http://www.example.com";
$backlink = new SimpleBacklinkChecker($api_key, $url);
$backlink->setOmitInlinks('none');
$entryes = $backlink->getAllBacklink();
foreach($entryes as $entry) {
    echo $entry->getUrl()."<br>";
}

Scarica la libreria (ZIP)

Altri link che potrebbero interessarti
  • » Utilizzare Google Analytics API con PHP
  • » Script PHP per generare QR Codes
  • » Script Alexa Traffic Rank in PHP
  • » MySql Http Tunneling
  • » Interagire con le Youtube Api in PHP
  • » Google Webmaster Tools Api in PHP

  • 7 Commenti per "Uno script Backlink Checker in PHP"

    Autore: daniele

    Ciao Antonio, Prima di tutto grazie per aver condiviso con tutti noi le tue conoscenze. Ottimo articolo, vorrei aggiungere solo una cosa.. All'atto della creazione dell'API di Yahoo verra' richiesto che tipo di api si vuole andare a creare.. se generica o protetta da autenticazione: Consiglio di mettere Generica. Per chi invece non mastica il php, nell'esempio di antonio occorre aggiungere una parantesi graffa alla fine del testo per terminare il ciclo foreach. Per il resto, ho provato lo script, e funziona molto bene. Bravo, ottimo lavoro. E adesso non ci rimane che tweettare il tuo articolo tutti insieme ;-) Alla prossima, Daniele

    martedì 22 dicembre 2009 ore 09:23

    Autore: Antonio Coschignano

    Ciao Daniele, grazie a te e ai tuoi contributi e consigli sempre graditi :-). Provvedo subito a corregere la parentesi. Ciao alla prossima Antonio

    martedì 22 dicembre 2009 ore 10:22

    Autore: daniele

    Ciao antonio, E' possibile trovare anche i link no follow e do follow con questo script ? :)

    mercoledì 23 dicembre 2009 ore 21:21

    Autore: Antonio Coschignano

    Ciao Daniele, purtroppo no. Le API non consentono questa operazione. Bisognerebbe creare una funzione ad hoc che per ogni backlink esamina tramite magari le espressioni regolari la presenza dell'attributo nofollow

    venerdì 25 dicembre 2009 ore 19:50

    Autore: Paolo

    Ciao Antonio, sto provando a far funzionare lo script e mi esce questo errore: PHP Fatal error: Call to undefined function curl_init() puoi aiutarmi?

    domenica 18 luglio 2010 ore 08:06

    Autore: Antonio Coschignano

    Ciao Paolo, questo script utilizza al suo interno la libreria CURL. Mi sono dimenticato di citarlo nell'articolo. Quindi l'errore dipende da questo. Solitamente questa libreria è installata di default su hosting linux, mentre su hosting windows bisogna installarla, sempre e comunque se si hanno i privilegi necessari. Per installare la libreria qua trovi un'ottima guida Installare cURL per PHP/Apache su Windows XP. Ciao

    domenica 18 luglio 2010 ore 12:53

    Autore: Rifano

    Thanks. It's very good script. I've download it. It's work. Do you have a script to check backlink for google, Alltheweb and others?

    venerdì 15 aprile 2011 ore 04:43

    Lascia un commento

    Nome :
    E-mail :
    Commento :

    Tutti i commenti inseriti devono essere approvati da un amministratore prima di essere visualizzati al pubblico. Si tratta di una misura preventiva contro spam e pubblicità e non è necessario reinviare il commento. Si prega di scrivere commenti in tema. Spam e messaggi promozionali non vengono approvati.