Sie wollen über die Webmaster Tools bei Google mehr über Ihre Seite / Suchanfragen/ Keywords erfahren…

Hier finden Sie Teilantworten oder Endlösungen wie es geht 🙂

Es geht um die automatische Verarbeitung der Daten aus den Google Webmaster Tools und wie man an sie heran kommt unter Verwendung von PHP.
Zielgruppe für diesen Beitrag sind Website Betreiber und Entwickler. Von der Meta-Ebene bis hin zum Code.

Vorraussetzung / Einleitung

Sie haben eine Site/Domain die über Google gefunden werden kann.
Nein: Nicht „Google Analytics“, Ihre Domain und die Webmaster Tools von Google!

Google unterdrückt ja Informationen des Suchenden damit dritte (also auch Sie als sog. „Site owner“) diese Daten nicht bekommen . Aber als Eigentümer der Domain können Sie doch, nach einigen Einstellungen, wieder Details in Erfahrung bringen. Ein wenig wild aber so ist es. In Teilen gewisser politischer Situationen geschuldet: „Datenschutz“

Hintergrund: Ich arbeite gerade bei einem Online Shop der Google und seine AGB’s nicht an seine Kunden durch reicht! Also keine Google Analytics, Google Fonts o.ä. verwendet, dennoch an Daten kommen möchte die über Google rein kommen!
Sehr lobenswert wenn mal sieht was alles passieren kann wenn ein riesiger Suchmaschinenanbieter Probleme hat und die falschen Entscheidungen durch Unachtsamkeit gegenüber seinen Internet-Benutzern getroffen hat .

Dennoch: Google stellt das „Non Plus Ultra“ als Suchmaschine im Netz dar, wir benutzen es.

Here we go:

Ablauf / Vorbereitungen

1) Ein Google Konto besorgen
2) Die Google Webmaster Tools aufsuchen
3) Google Developer Console
4) Projekt einrichten
5) Permissions und Service Accounts
6) APIs & Auth
7) Credentials: Schlüssel/ Keys und ApiKey Zugänge erstellen
8) Service Account Emailadresse bei dem entsprechenden Service, also hier den „Google Webdeveloper Tools“ einrichten.


  1. Ein Google Konto besorgen: Hier
  2. Die Webmaster Tools aufsuchen (hier die sog. Google Search Console) und Ihre Web-Seiten dort „Registrieren“ (PROPERTY hinzufügen).
    Sie benötigen ggf. FTP Zugangsdaten um ihre Sites zu autorisieren. Im falle eines WordPress.com Blogs z.B. kann auch ein Code innerhalb der Admin Seite hinterlegt werden.
    Sie erhalten nach dem Registrieren einige Informationen an Tipps und Tricks die wirklich gut und brauchbar sind. Behalten Sie diese im Auge. Warten Sie nun ein paar Tage bis die Google Roboter Ihre Daten zu ihrem Account hinzugefügt haben.
    Sollten Sie keinen weitere technische Verarbeitung wollen wären die Informationen hier zu ende.
  3. Google Developer Console (hier, Bild 1) aufsuchen und und damit vertraut machen. Es gibt immer mal wieder Neuerungen. Auch in der grafischen Aufbereitung der Seite. Bei mir sieht es wie folgt aus:
    Bild 1: Google Developer Console

    Bild 1: Google Developer Console

  4. Projekt einrichten (Select a project -> create a project)
  5. Permissions und Service Accounts (Bild 2): Fügen sie andere Eigner, Mitarbeiter, Developer hinzu. Die Email Adressen der Service Accounts werden später noch benötigt.
    Google Developer Console - In einem Projekt - Bild 2

    Google Developer Console – In einem Projekt – Bild 2

  6. APIs & Auth: Diese Seite darf auch nie vergessen werden: Aktivieren Sie API’s die Sie nutzen möchten. Erst dann kann eine spätere Funktion auch gewährleistet werden! Für die Webmaster Tools muss man derzeit keine API freischalten da sie dort nicht aufgeführt ist. In der Dokumentation konnte man irgendwo so etwas auch lesen aber es war nur Zufall um dann im späteren andere Problem besser eingrenzen zu können.
    Google Developer Console - API's - Bild 3

    Google Developer Console – API’s auswälen und aktivieren – Bild3

  7. Credentials: Die Alternative zu Username und Passwort wird hier verwaltet. Fügen sie alle Möglichkeiten einmal hinzu. Benötigt wird in diesem Szenario nur der sog. „service account“ welcher mit „privat key authentication“ arbeitet. Die json-Datei, und auch alle anderen Schlüssel/ keys, die Sie angeboten bekommen speichern sie bitte an einem sehr sicheren Ort! Falls sie Bezahl- Services in Anspruch nehmen und diese Schlüssel abhanden kommen kann es unter Umständen teuer werden wenn jemand anderes sie benutzt und viel nutzen daraus schlägt.
    Unter „OAuth consent screen“ hinterlassen sie bitte noch einen Produktnamen (Zb. Name Ihrer Applikation und welchen Job sie erledigen soll). Sollte OAuth einmal ins Spiel kommen kann alles an diesem einfachen Namen scheitern und die Suche nach dem Problem wird langatmig. :-/
    Google Developer Console - Credentials - Bild 4

    Google Developer Console – Credentials – Bild 4

  8. Service Account Emailadresse suchen und zwischenlagern. Diese wird nun gebraucht.
    Unter Permissions und Credentials ist eine Emailaddresse. Jene die für den service account zuständig ist. Sie ist identisch. Diese Email muss nun mit Zugriffserlaubnis in den Webmaster Tools eingerichtet werden! Sonnst kommt keine Applikation ohne den Webbrowser und mit Hilfe von Menschenhand rein.
    Google Webmaster Tools - Nutzer hinzufügen - Bild 5

    Google Webmaster Tools – Nutzer hinzufügen – Bild 5

    Google Webmaster Tools - Nutzer hinzufügen - Bild 6

    Google Webmaster Tools – Nutzer hinzufügen – Bild 6

Bis hier hin. Viele Schritte und viele Informationen. Nehmen Sie sich Zeit……

OAuth ? OAuth2 ?

Brauchen Sie nicht! Aber: Sie sollten erst einmal genau lesen was OAuth ist und in Erfahrung bringen was es kann und welche Anwendungsfälle Sie damit abdecken können.
Für den Fall das Sie Ihre eigene Site untersuchen wollen und Daten bekommen möchten: OAuth brauchen sie nicht! OAuth2 ist tatsächlich recht cool und vielseitig einsetzbar aber nicht für den aktuellen Anwendungsfall.

Interessante Dokumentationen die ich Ihnen ans Herz legen möchte:
Heise Developer – Flexible und sichere Internetdienste mit OAuth

Die RFC’s sind immer, im mindesten, ein überfliegen Wert:
Engl: RFC 6749 – The OAuth 2.0 Authorization Framework
Engl: RFC 6750 – The OAuth 2.0 Authorization Framework: Bearer Token Usage


PHP Code / Implementierung

Google stellt für seine API’s sogar Code zur Verfügung. Damit sind es nun nur noch wenige Schritte 🙂

Quellen besorgen:

cd <myProjects>
git clone https://github.com/google/google-api-php-client.git

Die Google API PHP Client – Library wird mittels git in den Ordner google-api-php-client/ herunter geladen.

Sie finden zahlreiche Beispiele im Ordner examples/ die aber alle erst konfiguriert werden müssen. Zusätzlich ist es gut zu wissen: Sie wollen fast alle OAuth sprechen. Wir heute nicht!
Die enthaltene README gibt wichtige Informationen wo man ggf. zu seinem Anwendungsfall noch weitere Beispiele finden könnte oder hier im Anhang unter Quellen.

Der Service und seine Verbindung

Die Verbindungsdaten kommen aus der zuvor herunter geladenen Json-Datei oder durch die anderen Zugangsdaten- Einrichtungen z.B. Der (developer) ApiKey.

<?php
// Please set the correct path to the Google sources
require_once realpath(dirname(__FILE__) . '/src/Google/autoload.php');

/* Getting credentials from my local config.php (taken from the json file)
 * Example, returns:
 * $config['client_email'] // Service Account Email
 * $config['private_key'] // the long key from the json file (repl. \n and \u...)
 * $config['apiKey'] // also created at the developer console 
 * $config['siteUrl'] e.g.: 'http://flobee.cgix.de/'
 * $config['appName'] // your appName
 */
$config = include_once dirname(__FILE__) . '/config.php';

$client = new Google_Client();
$client->setApplicationName($config['appName']);
$client->setDeveloperKey( $config['apiKey'] );


// Services we want to use and which are enabled
$scopes = array(
    // for tests readonly is good
    'https://www.googleapis.com/auth/webmasters.readonly'
);

$credentials = new Google_Auth_AssertionCredentials(
    $config['client_email'], 
    $scopes, 
    $config['private_key']
);
$client->setAssertionCredentials($credentials);

// if expired reconnect and recieve a new token which grants access internally
if($client->getAuth()->isAccessTokenExpired()) {
    $client->getAuth()->refreshTokenWithAssertion($credentials);
}

Hiermit wird die Authentifizierung zum Nutzen der API geregelt. Aber: Vorsicht falle! Nicht jeder Service verlangt die Authentifizierung! Wo, wann und wie kann man Teilweise in der API Dokumentation in Erfahrung bringen und welche „scopes“ dazu benötigt werden.

Service benutzen

Der Google API Client ist nach eigenen Aussagen nicht vollständig aber das Angebot an Möglichkeiten riesig und lädt zum spielen ein……

<?php
$webmastersService = new Google_Service_Webmasters($client);

/* 
 * We want search-informations, the searchanalytics object
 * NOTE:
 * NOT the KEYWORDS which google found when indexing the site
 */
$searchanalytics = $webmastersService->searchanalytics;


// Build a query for the Search Analysis
$requestSearchAnalytics = new Google_Service_Webmasters_SearchAnalyticsQueryRequest;
$requestSearchAnalytics->setStartDate('2015-06-01');
$requestSearchAnalytics->setEndDate( date('2015-07-01');
$requestSearchAnalytics->setDimensions(array('query'));
$requestSearchAnalytics->setRowLimit(10); // max: 5000, def: 1000

// Query the service for our site
$searchAnalyticsResult = $searchanalytics->query($config['siteUrl'], $requestSearchAnalytics);

// get the result (list of objects)
$rows = $searchAnalyticsResult->getRows();

print_r($rows);

Fazit

Googles Unterdrückung der Weiterleitung des HTTP REFERER: Der Sicherheit/ des Datenschutzes wegen. !?
In Teilen finde ich es gut so! Die andere Seite sagt: Was für ein Aufwand steckt dahinter… muss das so sein? Google stellt aufwändige Schnittstellen zur Verfügung, andere müssen sie lesen und in Aktion bringen damit die unterdrückten Daten dem Eigner doch wieder zur Verfügung gestellt werden können. :-/ zzzz
Zumal das ein oder andere mittlerweile bei Google echtes Geld kostet. Aber auch Google bekommt ja durch Ihre Registrierung wieder weitere Erkenntnisse für ihre Geschäfte. 😀
Dennoch: Es ist eine Arbeits- Beschaffungsmassnahme. Dieser Artikel würde nicht existieren wenn meine Server logs alles wiedergeben würden was ich an Daten eigentlich bekommen sollte bzw. wollen würde 🙂 . Zwiespältig, aber wahr! Und würde es Google nicht machen wäre es jemand anderes.

Quellen