Das Putzlowitsch Test- und SEO-Blog

Black Hat Sith / White Hat Jedi – ganz ohne SEO

Black Hat Sith / White Hat Jedi – SEO-Wettbewerb

Der schwarze Hut

Es gibt mal wieder einen SEO-Wettbewerb, gewissermaßen um das Sommerloch zu füllen. Der Start war am 27. Juli und er läuft noch bis zum 31. August. Der Gesamtwert der Preise von 40000 Euro wirkt recht spektakulär und auch der Ablauf und die Wertung der Teilnehmer klingen durchaus innovativ, was einen SEO-Wettbewerb angeht.

So wird nicht nur an einem Stichtag zu einer bestimmten Zeit das Ranking bei Google herangezogen. Vielmehr gibt es an fünf Tagen vor Ende des Wettbewerbs jeweils um 19 Uhr eine Punktevergabe für die Rankings von Platz 1 bis 40. Hier zählen aber nur „Text-Suchergebnisse“, also keine Bilder, Videos, News usw. Wer dann in der Summe die meisten Punkte hat, hat gewonnen. Einfach, aber durchaus mal etwas Neues bei einem SEO-Contest.

Und noch etwas ist anders als sonst, es gibt zwei Suchbegriffe, auf die optimiert werden soll: Black Hat Sith und/oder White Hat Jedi

Ausgerufen hat den SEO-Wettbewerb die Website CineStock, Anbieter für lizenzfreie Cinemagraphs, Videos, Bilder und Musik. Cinemagraphs bzw. Cinemagramme sind laut Wikipedia Standbilder, die eine oft kleine, sich wiederholende Bewegung enthalten. Sie erscheinen dem Betrachter eher als Bild statt als ein kurzes Video.

Onpage-SEO, nie davon gehört!

Wenn man sich die Seite zum Wettbewerb bei cinestock ansieht, wird klar, warum sie einen SEO-Wettbewerb ausgerufen haben. Denn die Seite benötigt dringen etwas Onpage-Optimierung. Eine vernünftige, technische Optimierung der Webseiten selbst ist die Basis jeder SEO-Maßnahme. Da können Inhalte und externe Links noch so gut sein, wenn die Seite lahm daherkommt, sind die Besucher schnell wieder weg und auch Google wird nicht mit Top-Rankings winken.

Cinestock – Netzwerkanalyse

Insgesamt 227 Abfragen laden mal eben knapp 170 MB herunter. Das dauert dann auch mit meiner DSL-100 Anbindung stolze 18 Sekunden.

So werden die Logos der 36 Sponsoren und 26 Medienpartnern als einzelne JPEG-Bilder eingebunden.

Cinestock – Medienpartner Logos

Den Vogel schießt hier das 193×50 Pixel „große“ Logo von „SEO-Trainee“ ab, das als JPEG mal eben mit 650 kB zu Buche schlägt. Als PNG dürfte es etwa 10 kB groß sein.

Generell ist für Logos und Grafiken das PNG-Format besser geeignet und bei einer Vielzahl von kleinen Bildchen sollte man auch über Techniken wie CSS-Sprites oder Ähnliches nachdenken.

Aber gut, das PNG-Format kommt dann doch noch zum Einsatz. Allerdings hier nun für Bilder, die eher Foto-Charakter haben und für die daher besser das JPEG-Format geeignet ist.

Cinestock – Bilder (als PNG)

Am Ende der Seite findet man „Content für deine Seite“, eine Liste mit 20 Fotos der Größe 1920×1080 Pixel im PNG-Format und weiteren 35 Cinemagramme mit einer Breite von 650 Pixel als animierte GIF-Dateien. Gut, für die Cinemagramme ist wegen der Animation das GIF-Format die einzige Option. Aber für die Fotos wäre man mit JPEG-Bildern besser gefahren, das Bild „Black Hat Pokal 3“ ist als PNG über 3 MB groß, als JPEG dürfte es bei noch guter Qualität um 300 kB groß sein.

Aber unabhängig von der Eignung oder Nichteignung des Bildformates ist es keine gute Idee, 55 recht große Bilder auf einer Seite direkt als Bild in der Originalgröße einzubinden. Hier hätte es eine Galerie mit kleinen Vorschaubildern, die auf das Originalbild verlinken, auch getan.

Und was ist mit Facebook?

Allein 61 externe Requests gehen zum Facebook-CDN (fbcdn.net), davon 11 CSS, 29 JS und 15 mp4-Videos. Was für Videos eigentlich? Ganz oben am Anfang der Seite ist ein FB-Video als Erklärvideo eingebunden, aber was ist mit den 14 anderen?

Viele, externe Ressourcen sind der Seitengeschwindigkeit auch nicht gerade zuträglich.

SEO fängt mit Onpage an

Liebe Betreiber von CineStock, bevor Ihr einen SEO-Wettbewerb startet, solltet Ihr erst einmal die SEO-Hausaufgaben machen. Sonst verpuffen die positiven Effekte des Wettbewerbs ganz schnell unter der ächzenden Last einer lahmen Webseite!

2 Kommentare »

IP-Adresse bei Strato anonymisieren – so gehts

Strato Logfile anonymisiert

Strato-Logfile IP-Adresse anonymisiert

In den Server-Logdateien, die Strato seinen Webhosting-Kunden bereitstellt, werden die IP-Adressen schon seit vielen Jahren anonymisiert. Laut Hilfe/FAQ werden dazu die ersten 9 Bit der IP-Adresse in einen Hash-Wert umgewandelt. Aus der IP-Adresse 123.123.123.123 wird z.B. 123.123.122.243 (weitere Infos).

So weit, so gut, damit dürfte man, was personenbezogene Daten in den Log-Dateien angeht, auf der sicheren Seite sein. Durch die Anonymisierung geht der Personenbezug verloren.

Vollständige IP-Adresse in der Umgebung

Allerdings wird die nicht-anonyme IP-Adresse an alle Website-Applikationen wie z.B. WordPress durchgereicht und kann dort weiterverarbeitet und gespeichert werden. Man sieht das ganz gut auf einer PHP-Info-Seite:

Strato: IP-Adresse mit PHP-Info

Die vollständige IP-Adresse steht im Feld ‚REMOTE_ADDR‘ der globalen Arrays $_SERVER und $_ENV (Environment) zur Verfügung. Auch in anderen Programmiersprachen wie Perl, Python und per SSI (Server Side Includes) kann man darauf zugreifen.

Viele Web-Applikationen nutzen diese IP-Adresse für unterschiedliche Zwecke. In WordPress wird zu jedem Kommentar die IP-Adresse gespeichert, Statistik-Tools wie Piwik nutzen diese ebenso. Nun ist ja die IP-Adresse ein personenbezogenes/-beziehbares Datum und sollte daher nicht exzessiv genutzt und gespeichert werden.

Alles ganz anonym

Nun wäre es doch nicht schlecht, wenn man auch diese vom Webserver bereitgestellte IP-Adresse einfach anoymisieren könnte, ganz generell gewissermaßen auf der Systemebene.

Bei Strato geht das tatsächlich. Schon vor längere Zeit gab es nach der Einführung von „Speed Plus“ das Problem, das nicht mehr die tatsächliche IP-Adresse, sondern die eines Strato-Servers als Remoteadresse durchgereicht wurde. Die dort beschriebene Lösung für die .htaccess-Datei funktioniert prinzipiell immer noch. Nur muß ich jetzt nicht die IP-Adresse aus dem X-Forwarded-For extrahieren und der REMOTE_ADDR zuweisen, sondern die IP-Adresse verkürzen und mit Nullen auffüllen.

Mit dem Modul mod_setenvif hat man die Möglichkeit, Umgebungsvariablen abhängig von Umgebungsvariablen und Request-Feldern zu setzen. Genau das brauchen wir hier. Wir haben die Umgebungsvariable Remote_Addr und wollen diese verkürzt (anonymisiert) in die Umgebungsvariable REMOTE_ADDR setzen. Das Problem läßt sich mit ein bißchen Regular-Expression-Zauber in zwei Zeile in der .htacces erschlagen:

SetEnvIf Remote_Addr ^((\d+\.){3}) REMOTE_ADDR=$10
SetEnvIf Remote_Addr ^(([^:]+:){2}) REMOTE_ADDR=$1:

Zwei Zeilen sind deshalb erforderlich, weil IPv4- und IPv6-Adressen jeweils extra verarbeitet werden. Die Zahlen in den geschweiften Klammern geben an, wieviele Elemente der IP-Adresse erhalten werden sollen. Mit $1 wir der Rückbezug auf die erhalten gebliebenen Elemente hergestellt und die Zeichen danach wurden einfach hinzugefügt. In der ersten Zeile ist das also nicht nicht $10, sondern $1 und 0. Damit wird aus der IP-Adresse 217.245.43.45 dann 217.245.43.0.

Möchte man nur die ersten beiden Elemente der IPv4-Adresse erhalten, mußte die erste Zeile so aussehen:

SetEnvIf Remote_Addr ^((\d+\.){2}) REMOTE_ADDR=$10.0

Das 0.0 wird deshalb verwendet, damit die IP-Adresse „syntaktisch“ richtig erhalten bleibt. Aus 217.245.43.45 wird 217.245.0.0.

Optimalerweise steht die zwei Zeile ganz am Anfang einer .htaccess im Wurzelverzeichnis des Webpaketes. Dann wirkt sei auch auf alle Domains oder Subdomains, die ihr sichtbares Wurzelverzeichnis in einem Unterverzeichnis des Webspace haben.

Durchschlagener Erfolg

Damit wird die IP-Adresse nicht nur für PHP anonymisiert, sondern auch für andere Programmiersprachen. Zur Demonstration habe habe ich vier Beispiele vorbereitet, bei denen Ihr Eure aktuelle IP-Adresse sehen solltet, allerdings mit der letzten Stelle auf Null gesetzt:

Die Anonymisierung ist so durchschlagend, daß sogar die Error-Log-Daten, die Strato im Kundenbereich bereitstellt, nun anonymisiert sind:

Strato Error-Log: IP-Adresse anonymisiert

Und die normalen Server-Log-Files, die es im Strato-Kundenmenü gibt, sind nun sogar doppelt anonymisiert. Einmal ist die letzte Stelle genullt und dann greift noch die oben beschriebene Strato-Anonymisierung.

Anonymer geht es kaum noch. :-)

Keine Kommentare »

GSC-Liste – ein Bookmarklet für die Google-Search-Console

Bookmarklets

Bookmarklets sind feine Sachen, denn man kann tolle Dinge damit machen. :-)

Ein Bookmarklet ist ein Browser-Lesezeichen, welches aber nicht die URL einer Webseite speichert, sondern Javascript-Code. Dieser kann dann auf eine gerade im Browserfenster angezeigte Webseite losgelassen werden.

Das Bookmarklet hat Zugriff auf den kompletten Seiteninhalt, kann diesen verändern oder Daten extrahieren und z.B. in einem neuen Fenster darstellen.

Vor einiger Zeit hatte ich bereits mal ein Bookmarklet geschrieben, das die Ergebnisseite der Google-Bildersuche auswertet und eine neue, übersichtliche Listenansicht erstellt. Die Daten aus dieser Ansicht können auch als CSV-Datei gespeichert werden.

Die Google-Search-Console, ehemals Webmaster-Tools

GSC – Indexierungsstatus

Die Google-Search-Console (GSC) bietet dem Webmaster viele nützliche Werkzeuge und Statistiken. So kann man sich z.B. den Indexierungsstatus für eine Website ansehen.

Der Bericht „Indexierungsstatus“ bietet Daten zu den URLs, die Google im vergangenen Jahr in der aktuellen Property zu indexieren versuchte.

Dieser Wert gibt die Gesamtzahl der URLs an, die für die Anzeige in den Suchergebnissen verfügbar sind, zusammen mit weiteren URLs, die Google mit anderen Methoden finden könnte. Diese Zahl variiert im Laufe der Zeit, während Sie Seiten hinzufügen und entfernen. Die Anzahl der indexierten URLs ist fast immer deutlich kleiner als die Anzahl der gecrawlten URLs, weil unter Insgesamt indexiert nicht jene URLs aufgeführt werden, die als Duplikate oder nicht kanonisch betrachtet werden oder die ein noindex-Meta-Tag enthalten.

Mit dem Button [Diagrammdaten herunterladen] kann man die Daten als CSV-Datei oder in Google-Docs speichern. Teilweise kann man Daten auch per GSC-API abfragen, speichern und weiterverarbeiten.

Nur leider gibt es diese Möglichkeit nicht in allen Bereichen der Search-Console.

Speichern oder nicht speichern, das ist hier die Frage

Wegen eines Problems mit einem meiner Webhoster waren Anfang des Jahres zwei Statistiken für mich besonders interessant, die „Website-Fehler“ und die „Crawling-Statistiken“.

Und genau bei diesen Statistiken gibt es keine Speichermöglichkeit und meines Wissens auch keinen Zugriff per API. Man kann bestenfalls einen Screenshot machen, aber da sieht man keine konkreten Zahlen. Beim Überfahren des Diagramms mit der Maus werden zwar die Daten zum aktuelle Datenpunkt eingeblendet, aber eben nur für den einen.

GSC – Keine Antwort vom Server

Aber irgendwo auf der Webseite müssen die Daten ja zu finden sein, wenn sie als Tooltip-Fenster angezeigt werden können.

GSC-Liste Bookmarklet

Ja, die Daten sind auf der Webseite zu finden und genau hier kommt nun das Bookmarklet ins Spiel. Es extrahiert die Daten und stellt sie als CSV-Datei bereit. Es gibt keinerlei Einstellmöglichkeiten und es wird auch keine neue Browserseite geöffnet. Der Klick auf [GSC Liste] öffnet nur den „Datei speichern“-Dialog.

GSC-Liste als CSV-Datei speichern

Der Dateiname wird aus dem letzten Teil des Pfades der URL in der GSC (‚crawl-stats‘, ‚crawl-errors‘), dem Domain-Namen und dem Datum von bis zusammengesetzt.

Hier findet Ihr das Bookmarklet Version 1.0:

GSC Liste

Die Bookmarklets sind zwar Links, es macht aber wenig Sinn, diese hier direkt anzuklicken. Vielmehr müßt Ihr sie als Lesezeichen im Browser speichern, also z.B. einfach in die Bookmarkleiste ziehen.

Das Bookmarklet funktioniert nur auf den Seiten „Crawling-Statistiken“ und „Crawling-Fehler“ in der Google-Search-Console.

Ich habe es mit den aktuelle Desktop-Versionen von Firefox (57.0.4) und Chrome (63.0.3239.132) getestet. Damit funktioniert es. Wie es mit anderen Browsern aussieht, kann ich nicht sagen. Das könnt Ihr gerne ausprobieren und hier dann in den Kommentaren berichten. :-)

2 Kommentare »

Google Bilder-Liste 1.5 – Update des Bookmarklets für die Google Bildersuche

Bookmarklet Google-Bilder-Listen 1.5

Vor einigen Wochen hat Google die Meta-Daten aus der Universal-Search-Bilderbox entfernt. Auch in der URL zur Bildersuche sind nicht alle wichtigen Informationen enthalten. So fehlt zum Beispiel die Bild-URL und auch die Seiten-URL ist nicht mehr vorhanden.

Mein Google-Bildersuche Bookmarklet benötigt aber genau diese Informationen (und noch ein paar mehr), damit es funktioiert. Im Knowledge-Graph und in der Bildersuche selbst sind die Meta-Daten zu den Bildern noch vorhanden.

Aus den Daten der Bilderbox kann man glücklicherweise noch die Bild-Id ermitteln. Damit können dann die passenden Daten in der Bildersuche abgegriffen werden. Und genau so funktioniert auch die Erweiterung der neuen Version 1.5 des Bookmarklets.

Falls eine Bilderbox zu sehen ist, wird im Hintergrund die Bildersuche seitenweise in Blöcken zu 100 Suchergebnissen aufgerufen, bis die Daten zur entsprechenden Bild-Id gefunden wurden. Es kann aber auch passieren, daß das Bild nicht in der Bildersuche vorhanden ist. Dann wird wie beim zweiten Treffer oben im Screenshot als Bild-URL example.org angezeigt. Zudem gibt es keine Bildgröße und wegen dern fehlenden Doc-Id auch keine Suche nach ähnlichen Bildern, weiteren Größen usw.

Durch das Abrufen der Bildersuche kann es zu mehreren Sekunden Verzögerung kommen, bis die Liste angezeigt wird. Das hängt unter anderem auch davon, an welcher Position und ob überhaupt das Bild aus der Bilderbox in der normalen Bildersuche zu finden ist.

Für gefundene Bild wird in Klammern die Position in der Bildersuche ausgegeben, oder falls nicht vorhanden -1.

Update Version 1.6: Es hatten sich noch ein paar kleiner Fehler eingeschlichen, die mit Version 1.6 behoben wurden.
Außerdem gibt es durch einen Fehler die neue Erkenntnis, daß für die Suche nach ähnlichen Bildern, weiteren Größen usw. als Doc-ID auch die Bild-ID verwendet werden kann. Also funktionieren diese Abfragen auch dann, wenn das Bild selbst nicht in der Bildersuche gefunden wurde. :-)

Das aktuelle Google-Bildersuche Bookmarklet findet Ihr hier.

Keine Kommentare »

Siebtlingsgeburt-Rankings bei ranking-123.de als XML und JSON

Siebtlingsgeburt

Wie schon letztes Mal gibt es auch beim aktuellen SEO-Wettbewerb Siebtlingsgeburt die Ranking-Daten von ranking-123.de im XML- und JSON-Format.

Die URLs lauten:

Der Aufbau ist recht einfach und weitestgehend selbsterklärend. Im Kopf gibt es drei Datenfelder:

  • nam – Name bzw. Suchbegriff (z.B. Siebtlingsgeburt)
  • upd – Datum und Zeit des letzten Updates der Liste
  • cnt – Anzahl der Google-Suchergebnistreffer (nicht Listeneinträge!)

Es folgt in rnk eine Liste der Suchergebnisse mit folgenden Datenfeldern:

  • pos – Position in den Suchergebnissen
  • url – URL der Seite
  • typ – Typ des Suchergebnisses, mögliche Werte
    • txt – normales Suchergebnis
    • new – Google-News
    • img – Universal Search Bilder
    • vid – Video
  • img – URL des Bildes, wenn Typ img ist (optional)
  • aut – Name des Autors, falls verfügbar (optional)
  • lpo – letzte Position, 1000 falls neu in der Liste

Bei der Position für Universal-Search Ergebnisse wird eine Unternummerierung vorgenommen. Das erste Ergebnis bekommt .01, das zweite .02, das dritte .03 usw. an die eigentliche Position angehängt. Befinden sich zum Beispiel vier Bilder an der Position 13, so erhalten sie die Positionen 13.01, 13.02, 13.03 und 13.04 in pos zugeordnet.

Die Daten werden stündlich zu vollen Stunde erhoben. Es dauert aber ein paar Minuten, bis sie dann tatsächlich vorliegen. Also sollten die Daten ein paar Minuten nach der vollen Stunde abgefragt werden. Den aktuellen Zeitpunkt der Daten sieht man ja in den Kopfdaten.

Das Top-10 Diagramm im PNG-Format liegt auch zu diesem Zeitpunkt vor. Es gibt ein 24-Stunden-Diagramm und ein 3-Wochen-Diagramm:

Leider liegen die Bilder nicht als https vor, so daß eine Einbindung in https-Seiten problematisch ist. Ich behelfe mir da derzeit mit einem kleinen lokalen „Proxy“, der die Bilder per PHP-Skript bei der Originalseite abholt und über eine „virtuelle“ lokale URL bereitstellt. Aber das ist ein Thema für sich… :-)

Keine Kommentare »