• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Récupérer son contenu à partir du cache de Google

21 November 2018 by Walid Gabteni 9 Comments

Il y a des jours où la malchance vous pousse à des besoins improbables, comme récupérer le contenu de son site après un drop de la base de données… et sans backup évidemment, sinon ce serait trop simple ! Oui, ça existe et Rémi peut en témoigner.

HELP : quelqu’un aurait une idée pour scraper et récupérer les contenus d’un site depuis le cache google (environ 200 URL) ? C’est un ami qui a supprimée sa BDD et a AUCUNE save 😂

— Rémi Nestasio (@reminestasio) 21 novembre 2018

Par chance je n’ai jamais eu à devoir faire ce travail mais le cas proposé par Rémi est suffisamment intéressant pour publier un post sur une solution envisageable.

L’efficacité de la méthode va probablement dépendre également du nombre de pages à récupérer, car on va devoir éventuellement “requêter Google” plusieurs fois pour récupérer dans un premier temps toutes les Urls de cache. Dans un second temps il faudra aussi accéder à chacune des URLs de cache (pour récupérer notre contenu), et là encore en fonction du nombre pages une solution avec proxys va s’imposer, et donc pour le faire en php il faudra utiliser curl.

Dans un cas comme celui proposé par Rémi (avec relativement peu d’URLs), une fois les URls de cache récupérée (et reconstruite) un Screaming Frog avec une vitesse de crawl très basse pourrait suffire (…mais à vérifier tout de même).

Le script ci dessous n’est pas parfait, il ne prévoit pas l’utilisation de curl pour se connecter avec des proxys, pourtant c’est un cas de figure où probablement on va en avoir besoin, je vous propose surtout une mécanique et j’avais besoin de faire vite. D’ailleurs si quelqu’un veut ajouter cette brique, j’aime autant (plus sympa et backlink gagné facilement), autrement je compléterai ce billet moi même plus tard.

Ce script contient actuellement :

1/ Une requête simple pour récupérer les résultats de Google avec une commande site:domaine.com (basique)

Sur un petit site (200, 300 pages, ça peut faire l’affaire). Pour les sites plus gros, par exemple un e-commerce avec 3 000 produits, déjà j’ai du mal à croire que vous n’ayez pas de backups mais dans un cas comme celui là rien que la récupération des pages indexées sur Google exigerai plus de finesse, en segmentant les requêtes site: par catégories par exemple (ce qui en fonction de vos URLs n’est pas toujours possible)…

2/ La récupération des Urls de cache

3/ La reconstruction des URls de cache pour palier au problème récent du cache Google (…grâce à l’astuce proposé par notre ami Johnny)

Someone on Twitter noticed you can make it work if you change the cached page URL after clicking in search. I don’t know if that always works, but it’s a cool hack. https://t.co/NXjxmC8tdP
-> https://t.co/8sFmkyVAJq

— 🍌 John 🍌 (@JohnMu) 8 octobre 2018

4/ Une fonction de connexion à l’URL de cache et la récupération de notre code html

Bref ne nous attardons pas plus, voici le petit bout de code en question, en espérant que vous n’en ayez jamais besoin, à moins que ce soit pour autre chose 🙂

Script PHP pour récupérer le contenu mis en cache par Google

<?php

	$domain = 'domain.com';
	$doc = file_get_contents('http://www.google.com/search?q=site%3A'.$domain.'&num=100');
	$doc = mb_convert_encoding($doc, 'HTML-ENTITIES', 'UTF-8');
	$dom = new DOMDocument();

	@$dom->loadHTML($doc);

	$xpath = new DomXpath($dom);
	$cache = $xpath->query("//a[contains(@href,'http://webcache')]/@href");

	foreach($cache as $key => $url){
		
		sleep(2);
		$cacheId = preg_replace('#(.*)cache:#i','',$url->value);
		$cacheId = preg_replace('#:http.*$#i','',$cacheId);
		$cacheUrl = 'http://webcache.googleusercontent.com/search?q=cache:'.$cacheId.':x.xyz';
		$cacheContent = recoverContent($cacheUrl);
		
		// un debug pour voir le contenu
		/*
		if ($key==0){
			echo '<textarea>'.$cacheContent.'</textarea>';
		}
		*/
	}

	function recoverContent($cacheUrl){
		
		$cacheContent = file_get_contents($cacheUrl);
		$cacheContent = explode("\n",$cacheContent);
		unset($cacheContent[0]);
		$cacheContent = implode("\n",$cacheContent);
		return $cacheContent;
	}
?>

Filed Under: blog

Reader Interactions

Comments

  1. Rémi Nestasio says

    21 November 2018 at 17 h 41 min

    Hello Walid,

    Alors déjà, je tiens à te remercier pour cet article avec un timing miraculeux ! Haha. Sans rire, je pouvais pas rêver mieux !

    Concernant Screaming Frog, j’ai bien évidemment testé, et en effet ça passe au début mais on est très vite bloqué par les captchas Google… 🙂 Je pense qu’il faut bien finir par utiliser des proxys, ou alors être patient et faire petit à petit…
    L’avantage de Screaming Frog est qu’on peut facilement extraire des zones de contenus précises (par Xpath par exemple) au lieu de récupérer tout le html en brut. Ça fait gagner du temps. Mais je suppose que cela serait également intégrable à ton script.

    Du coup, voici ce que j’ai fais pour mon cas précis avant ton article, il s’agissait d’un wordpress où la personne à carrément delete la BDD “par erreur” (dans le plus grand des calme, sans aucun backup). La “chance” que j’ai eu c’est qu’il y avait moins de 300 URLs.

    – Passage de la SERP Google à 100 résultats
    – Scrap des URL dans la SERP avec le plugin Chrome “Cool SEO”
    – Extraction uniquement des URL du cache Google
    – Crawl Screaming Frog en mode liste à 1 URL/seconde max
    – Ajout d’un custom extract avec un XPATH sur la zone de contenu WordPress
    – Ca donne un excel avec toutes les infos, que je retraite selon les besoins et que je match avec l’outil d’import WordPress.

    Hop, on arrive à retrouver un semblant de base article sur son Wordpres… Bien sur il reste toujours des déchets et des éléments à gérer, comme les images etc etc… Mais c’est un bon début quand derrière il y avait des années de boulot !

    A + et encore merci pour ta réactivité et cet article 🙂

    Rémi

    Reply
    • Walid Gabteni says

      21 November 2018 at 18 h 08 min

      De rien Rémi !

      C’est exactement ce que je pensais pour Screaming Frog, d’ailleurs as tu réussi au final à contourner le captcha ? A quelle nombre d’URL/seconde tu as du descendre pour que ça marche ?

      Custom extract effectivement indispensable ici, et oui c’est facile d’identifier les zones à extraire en php, il y a différents sélecteur pour ça, xpath par exemple si tu as l’habitude de le manipuler avec SF

      Reply
      • Rémi Nestasio says

        21 November 2018 at 18 h 14 min

        Pour mon cas, j’ai réussi à arriver à tout scraper en espaçant en 3 – 4 crawls.
        Le premier crawl a réussi à scraper 98 URL d’un coup sans blocage ! C’est après que ça a été plus compliqué. J’étais à 1 URL par seconde max. Je suis aussi aller résoudre des captchas à la main entre temps sur Google ^^

    • Laurent Bourrelly says

      22 November 2018 at 12 h 03 min

      Cache Yandex en alternative

      Reply
      • Walid Gabteni says

        22 November 2018 at 14 h 40 min

        Hello Laurent, intéressant on pense presque jamais à Yandex ou autres moteurs du coup je viens de tester, et bien comparé à Google c’est pas la fête à mémé avec les russes qui m’ont bloqué direct.

        Le coté positif c’est que ça te pousse à hausser le niveau et à tester les autres technos pour tenter de bypasser les sécus. A part le cache je suis sur qu’il y a un tas de trucs intéressants à creuser avec Yandex.

  2. vincent Guesne says

    21 November 2018 at 17 h 46 min

    WHouuuua, si j’avais su il y a 1 an, j’aurai fait le même tweet que Remi ^^

    Merci en tout cas super pratique 😉

    Reply
  3. Alex says

    22 November 2018 at 19 h 08 min

    Merci pour le script et la technique.
    En passant par la waybackmachine avec un script ou un tool :
    Web archive downloader ça ferait l’affaire je pense aussi.

    Reply
  4. Romuald Paris says

    27 November 2018 at 10 h 58 min

    Super article ! merci pour le script c’est cool 🙂

    Reply
  5. Vince says

    2 December 2018 at 23 h 02 min

    Hello,

    J’ai fait ce petit script pour récupérer les images via l’export Screaming Frog et la WebMachine si ça intéresse quelqu’un : https://pastebin.com/KLJxmQmw

    (Comment ça j’ai eu le soucis? :p)

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

Walid Gabteni : Consultant SEO

Walid Gabteni

Consultant en référencement, dans le SEO depuis 15 ans.

Audit technique, planification stratégique, mots-clés, netlinking, suivi, formations SEO...
je vous accompagne sur tous les volets de votre référencement naturel.

  • Facebook
  • LinkedIn
  • Twitter
  • YouTube

Top newsletter dans votre mailbox

Pour recevoir par email nos contenus marketing vous avez besoin de nous accorder votre consentement.

Vous pouvez vous désabonner à tout moment ici. Vous acceptez le transfert de vos données à mailchimp pour le traitement.

Synergies fortes et autres projets

Koris : Web Agency à Florence

SEO Hero : Topic Explorer and SEO Analysis

Sur la toile

  • Webladi
  • Qwanturank
  • Top 10 Stratégie
  • Marco Pini
  • Koris : Web Agency Firenze
  • Search Datalogy
  • Aymen Loukil
  • Mickael Challet
  • Korleon Biz

© 2023 · Light On SEO : Consultant SEO, Formation et référencement e-commerce | Mentions légales