Vous êtes ici Codes PHP et MySQL > Google > chargement des liens externes de google webmaster...

 

chargement des liens externes de google webmaster tools (GWT)

Ce script utilise l’extension PHP curl pour récupérer des informations sur les outils pour webmaster de google (ou google webmaster tools).
Il permet de charger dans trois tables les informations suivantes :
- les pages de ces sites avec des liens externes (alimente la table google_pages),
- les liens externes (alimente la table google_bl).

Ces informations peuvent ensuite être manipulées pour obtenir des statistiques sur les sites vous faisant des liens.

Pour le faire fonctionner, il faut créer les trois tables en utilisant la définition (en commentaire du script). Il faut également renseigner les paramètres de connexion à la base de données ainsi que les paramètres de connexion à google webmaster tools. Le script utilise un fichier temporaire dont le chemin est modifiable en cas de besoin.
depuis la nouvelle version de GWT, il n'est plus possible de récupérer la liste des sites associés à un compte. Il faut donc remplir à la main la table google_sites avec les sites enregistrés.
 
forty
Site de l'auteur voir
[21] sources en PHP voir
Code vu 7127 fois
Enregistré le 17 Déc 2007
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute chargement des liens externes de google webmaster tools (GWT)
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : chargement des liens externes de google webmaster tools...*/
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts314-PHP.htm              */
/* Auteur         : forty                                                     */
/* Date édition   : 17 Déc 2007                                               */
/* Website auteur : http://www.toplien.fr/                                    */
/*                                                                            */
/******************************************************************************/


//données pour la connexion à la base de données
$db_server 'votre-serveur-db.fr'//adresse du serveur MySQL ou localhost
$db_name 'nom_db'//nom de la base de données
$db_user_login 'user_db'//nom d'utilisateur pour la BD
$db_user_pass 'mot_pass_db'//mot de passe pour la BD

// email et mot de passe de google webmaster tools
$username 'votre_email_GWT';
$password 'votre_mot_pass_google_GWT';

//fichier temporaire
$filename './gwt_file.txt';

/* Tables
-- 
-- Structure de la table `google_sites`
-- 

CREATE TABLE `google_sites` (
  `url` varchar(150) collate latin1_german2_ci NOT NULL,
  PRIMARY KEY  (`url`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci 
COMMENT='Sites déclarés dans GWT';

-- 
-- Structure de la table `google_pages`
-- 

CREATE TABLE `google_pages` (
  `url` varchar(150) collate latin1_german2_ci NOT NULL,
  `nb_liens` int(11) NOT NULL,
  PRIMARY KEY  (`url`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci 
COMMENT='Pages avec lien externe de GWT';

-- 
-- Structure de la table `google_bl`
-- 

CREATE TABLE `google_bl` (
  `url` varchar(150) collate latin1_german2_ci NOT NULL,
  `url_bl` text collate latin1_german2_ci NOT NULL,
  `date` varchar(30) collate latin1_german2_ci NOT NULL,
  KEY `url` (`url`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci 
COMMENT='Liens externes de GWT';
*/

function get_http_code_description($code) {
  switch($code) {
    case 100 : return "OK pour continuer";
    case 101 : return "le serveur a changé de protocoles";
    case 200 : return "requête effectuée avec succès";
    case 201 : return "document créé (raison : nouvelle URI)";
    case 202 : return "requête achevée de manière asynchrone (TBS)";
    case 203 : return "requête achevée de manière incomplète";
    case 204 : return "aucune information à renvoyer";
    case 205 : return "requête terminée mais formulaire vide";
    case 206 : return "requête GET incomplète";
    case 300 : return "le serveur ne peut pas déterminer le code de retour";
    case 301 : return "document déplacé de façon permanente";
    case 302 : return "document déplacé de façon temporaire";
    case 303 : return "redirection avec nouvelle méthode d'accès";
    case 304 : return "le champ 'if-modified-since' n'était pas modifié";
    case 305 : return "redirection vers un proxy spécifié par l'entête";
    case 307 : return "HTTP/1.1";
    case 400 : return "erreur de syntaxe dans l'adresse du document";
    case 401 : return "pas d'autorisation d'accès au document";
    case 402 : return "accès au document soumis au paiement";
    case 403 : return "pas d'autorisation d'accès au serveur";
    case 404 : return "la page demandée n'existe pas";
    case 405 : return "méthode de requête du formulaire non autorisée";
    case 406 : return "requête non acceptée par le serveur";
    case 407 : return "autorisation du proxy nécessaire";
    case 408 : return "temps d'accès à la page demandée expiré";
    case 409 : return "l'utilisateur doit soumettre à nouveau avec plus d'infos"
;
    case 410 : return "cette ressource n'est plus disponible";
    case 411 : return 
"le server a refusé la requête car elle n'a pas de longueur";
    case 412 : return "la précondition donnée dans la requête a échoué";
    case 413 : return "l'entité de la requête était trop grande";
    case 414 : return "l'URI de la requête était trop longue";
    case 415 : return "type de média non géré";
    case 500 : return "erreur interne du serveur"; 
    case 501 : return "requête faite au serveur non supprimée";
    case 502 : return "mauvaise passerelle d'accès";
    case 503 : return "service non disponible";
    case 504 : return "temps d'accès à la passerelle expiré";
    case 505 : return "version HTTP non gérée";
    default: return "code retour inconnu";
  }
}

function my_curl_init() {
  global $ch;
  
  if (($ch curl_init()) === false) {
    $num_erreur curl_errno($ch);
    $text_erreur curl_error($ch);
    die("Erreur d'initialisation de la session cURL : " $num_erreur ' : ' $text_erreur);
  }
}

function my_curl_setopt($param$value) {
  global $ch;
  global $url;
  
  if (!curl_setopt($ch$param$value)) {
    $num_erreur curl_errno($ch);
    $text_erreur curl_error($ch);
    die("Erreur d'ajout de l'option cURL " $param ' pour ' $url ' : ' $num_erreur ' : ' $text_erreur);
  }
}

function my_curl_exec() {
  global $ch;
  global $url;

  if (($result curl_exec($ch)) === false) {
    $num_erreur curl_errno($ch);
    $text_erreur curl_error($ch);
    die("Erreur d'exécution cURL pour " $url ' : ' $num_erreur ' : ' $text_erreur);
  }
  $http_code curl_getinfo($chCURLINFO_HTTP_CODE);
  if (($http_code <> 200) && ($http_code <> 301) && ($http_code <> 302)) {
    $url_reelle curl_getinfo($chCURLINFO_EFFECTIVE_URL);
    $description get_http_code_description($http_code);
    die("Code retour $http_code pour $url_reelle : $description");
  }
  return $result;
}

function my_curl_close() {
  global $ch;
  
  curl_close($ch);
}

function my_mysql_select_db() {
  global $lk;
  global $db_server$db_user_login$db_user_pass$db_name;
  
  if (!$lk mysql_connect($db_server$db_user_login$db_user_pass)) {
    die(mysql_errno() . " : " mysql_error());
  }
  if (!mysql_select_db($db_name$lk)) {
    die(mysql_errno() . " : " mysql_error());
  }
}

function my_mysql_query($sql) {
  global $lk;
  if (!($res mysql_query($sql$lk))) {
    die(mysql_errno() . " : " mysql_error());
  }
  return $res;
}

if (!function_exists('htmlspecialchars_decode')) {
  function htmlspecialchars_decode($value) {
    $value str_replace('>','>',$value);
    $value str_replace('<','<',$value);
    $value str_replace('"','"',$value);
    $value str_replace('&','&',$value);
    return $value;
  }
}

function my_write_file($contenu) {
  global $filename;
  
  $fp fopen($filename"w");
  fwrite($fp$contenu);
  fclose($fp); 
}
?>
<html>
<head>
<title>Récupération des liens externes de google webmaster tools</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php

my_mysql_select_db($db_server$db_user_login$db_user_pass$db_name);

my_curl_init();

// Connection
$cookie '.';
$destination "https://www.google.com/accounts/ServiceLoginAuth";
$postdata "continue=" urlencode("https://www.google.com/webmasters/tools/") 
. "&followup=" urlencode("https://www.google.com/webmasters/tools/") . 
"&service=sitemaps&nui=1&hl=fr&Email=" urlencode($username) . "&Passwd=" urlencode($password) . "&PersistentCookie=yes&rmShown=1";
$url "$destination?$postdata";
my_curl_setopt(CURLOPT_URL$destination);
my_curl_setopt(CURLOPT_SSL_VERIFYPEERFALSE);
my_curl_setopt(CURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
my_curl_setopt(CURLOPT_TIMEOUT20);
my_curl_setopt(CURLOPT_FOLLOWLOCATION1);
my_curl_setopt(CURLOPT_RETURNTRANSFER1);
my_curl_setopt(CURLOPT_COOKIEJAR$cookie);
my_curl_setopt(CURLOPT_COOKIEFILE$cookie);
my_curl_setopt(CURLOPT_POSTFIELDS$postdata);
my_curl_setopt(CURLOPT_POST1);
$result my_curl_exec();
if (preg_match"/<meta http-equiv=\"refresh\" content=\"0; url=&#39;(.*)&#39;\">/si"$result$match )) {
  $url htmlspecialchars_decode($match[1]);
  my_curl_setopt(CURLOPT_URL$url);
  my_curl_setopt(CURLOPT_SSL_VERIFYPEERFALSE);
  my_curl_setopt(CURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  my_curl_setopt(CURLOPT_TIMEOUT20);
  my_curl_setopt(CURLOPT_FOLLOWLOCATION1);
  my_curl_setopt(CURLOPT_RETURNTRANSFER1);
  my_curl_setopt(CURLOPT_COOKIEJAR$cookie);
  my_curl_setopt(CURLOPT_COOKIEFILE$cookie);
  $result my_curl_exec();
} else {
  die("Impossible de récupérer l'url de redirection");
}

// Chargement des fichiers de BL
$sql_sites "SELECT url FROM google_sites";
$res_sites my_mysql_query($sql_sites);
$sql_delete="TRUNCATE TABLE google_pages";
$res_delete my_mysql_query($sql_delete);
$sql_delete="TRUNCATE TABLE google_bl";
$res_delete my_mysql_query($sql_delete);
while ($resultat_sites mysql_fetch_array($res_sitesMYSQL_ASSOC)) {
  // Récupère les pages ayant des liens externes
  $yoursiteurl $resultat_sites['url'];
  $url "https://www.google.com/webmasters/tools/backlinks-dl?hl=fr&siteUrl=" .
 $yoursiteurl "&sort=otherdomains";
  my_curl_setopt(CURLOPT_URL$url);
  my_curl_setopt(CURLOPT_SSL_VERIFYPEERFALSE);
  my_curl_setopt(CURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  my_curl_setopt(CURLOPT_TIMEOUT20);
  my_curl_setopt(CURLOPT_FOLLOWLOCATION1);
  my_curl_setopt(CURLOPT_RETURNTRANSFER1);
  my_curl_setopt(CURLOPT_COOKIEJAR$cookie);
  my_curl_setopt(CURLOPT_COOKIEFILE$cookie);
  $result my_curl_exec();
  my_write_file($result);
  echo "Fichier des pages avec lien externe récupéré pour $yoursiteurl ... ";
  $sql_insert "LOAD DATA LOCAL INFILE '$filename_esc'
            INTO TABLE google_pages
            FIELDS TERMINATED BY ','
            OPTIONALLY ENCLOSED BY '\"'
            ESCAPED BY '\\\\'
            LINES TERMINATED BY '\\n'
            IGNORE 1 LINES
            (`url` , `nb_liens`)";
  $res_insert my_mysql_query($sql_insert);
  echo "chargé<br>\n";

  //Récupère les liens externes
  $url "https://www.google.com/webmasters/tools/backlinks-details-dl?hl=fr&siteUrl=" $yoursiteurl "&sort=otherdomains";
  my_curl_setopt(CURLOPT_URL$url);
  my_curl_setopt(CURLOPT_SSL_VERIFYPEERFALSE);
  my_curl_setopt(CURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  my_curl_setopt(CURLOPT_TIMEOUT20);
  my_curl_setopt(CURLOPT_FOLLOWLOCATION1);
  my_curl_setopt(CURLOPT_RETURNTRANSFER1);
  my_curl_setopt(CURLOPT_COOKIEJAR$cookie);
  my_curl_setopt(CURLOPT_COOKIEFILE$cookie);
  $result my_curl_exec();
  my_write_file($result);
  echo "Fichier des liens externes récupéré pour $yoursiteurl ... ";
  $sql_insert "LOAD DATA LOCAL INFILE '$filename_esc'
            IGNORE INTO TABLE google_bl
            FIELDS TERMINATED BY ','
            OPTIONALLY ENCLOSED BY '\"'
            ESCAPED BY '\\\\'
            LINES TERMINATED BY '\\n'
            IGNORE 1 LINES
            (`url` , `url_bl` , `date`)";
  $res_insert my_mysql_query($sql_insert);
  echo "chargé<br>\n";
}

my_curl_close();

$sql "SELECT DISTINCT(url_bl) FROM google_bl";
$res my_mysql_query($sql);
echo mysql_num_rows($res) . " liens retour différents<br>n";

//fin de la connexion
mysql_close($lk);
?>
<p>fin</p>
</body>
</html>
 

Fonctions du code

: Initialise une session cURL - (PHP 4 >= 4.0.2, PHP 5)
: Retourne le dernier message d'erreur cURL - (PHP 4 >= 4.0.3, PHP 5)
: Retourne une chaîne contenant le dernier message d'erreur cURL - (PHP 4 >=...
: Alias de la fonction exit() - (PHP 4, PHP 5)
: Définit une option de transmission cURL - (PHP 4 >= 4.0.2, PHP 5)
: Exécute une session cURL - (PHP 4 >= 4.0.2, PHP 5)
: Lit les informations détaillant un transfert cURL - (PHP 4 >= 4.0.4, PHP 5)
: Ferme une session CURL - (PHP 4 >= 4.0.2, PHP 5)
: Ouvre une connexion à un serveur MySQL - (PHP 4, PHP 5, PECL mysql:1.0)
: Retourne le numéro d'erreur de la dernière commande MySQL - (PHP 4, PHP 5, PECL...
: - (PHP 4, PHP 5, PECL mysql:1.0)
: Sélectionne une base de données MySQL - (PHP 4, PHP 5, PECL mysql:1.0)
: Envoie une requête à un serveur MySQL - (PHP 4, PHP 5, PECL mysql:1.0)
: Indique si une fonction est définie - (PHP 4, PHP 5)
: Remplace toutes les occurrences dans une chaîne - (PHP 4, PHP 5)
: Ouvre un fichier ou une URL - (PHP 4, PHP 5)
: Écrit un fichier en mode binaire - (PHP 4, PHP 5)
: Ferme un fichier - (PHP 4, PHP 5)
: Encode une chaîne en URL - (PHP 4, PHP 5)
: Expression rationnelle standard - (PHP 4, PHP 5)
: - (PHP 5 >= 5.1.0)
: - (PHP 4, PHP 5, PECL mysql:1.0)
: Affiche une chaîne de caractères - (PHP 4, PHP 5)
: Retourne le nombre de lignes d'un résultat MySQL - (PHP 4, PHP 5, PECL...
: Ferme la connexion MySQL - (PHP 4, PHP 5, PECL mysql:1.0)
Commentaires
Merci pour ce script, toutefois il semble que le script soit incomplet. Il fait appel à une fonction "convert_url" qui n'est définie nulle part :

[cit nom=]$url_reelle = convert_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL));[/cit]
 
la fonction ne sert à rien pour cet exemple. Je l'ai supprimée.
 
Bonjour, je tente de faire fonctionner cet outil, mais celui ci ne fonctionne pas, "Impossible de récupérer l'url de redirection" quelqu'un aurait une idée pour me débloquer, merci d'avance
 
j'ai fait une mise à jour du script. Il ne marchait plus a cause de la modification de GWT.
Il ne faut pas oublier de remplir a la main la table google_sites. Elle contient les sites déclarés dans GWT.
 
Bon je teste ce script:

Pour réussir à récupérer le fichier de gwt j'ai du rajouter ca a l'adresse du site dans la table google_sites:

http%3A%2F%2Fwww.monsite.fr%2F

Après ça j'ai le message d'erreur suivant:

Fichier des pages avec lien externe récupéré pour http%3A%2F%2Fwww.monsite.fr%2F ... 2 : File '' not found (Errcode: 2)

dans mon repertoire j'ai bien un fichier qui se nomme gwt_file.txt.
Lorsque je l'ouvre avec excel, je retouve mes pages qui sont liées, une virgule, le nombre de liens qui pointent vers ces pages.

Mais je ne retrouve pas les liens externes en revanche.
 
Bonjour,

Le script ne semble pas à jour : de nombreuses URL ont été changées. Du coup, ça ne fonctionne plus en l'état, mais je pense qu'avec un peu d'astuce, on peut s'en sortir :)
 
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Google

 
 

PHP

 
 
 
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
        Publicité