AhCrawler

Spider und Suchmaschine in PHP.

Steckbrief :: ahCrawler

Startseite
Suchmaschine für deine Webseite und Webanalyse-Werkzeug zum Selberhosten.

Typ:
Web-Applikation
Der Webseiten-Crawler dient zum Aufbau eines Suchindex für deine Webseite. Mit dieser Datenbasis kann man in seine Webseite eine Suche einbinden. Durch Besucher eingegebene Suchbegriffe werden aufgezeichnet.
Weiterhin baut auf dem Suchindex ein Web-Analysewerkzeug auf. Dieses zeigt defekte Links (und soll künftig noch weitere Hinweise liefern).
Ein Admin-Backend hat Zugriff auf den Suchindex, eingegebene Suchbegriffe und die Webseiten Analyse mit Linkchecker.
Es können mehrere Profile für mehrere Domains verwaltet werden.

Anforderungen:
  • PHP 7
  • php-pdo und Support für Sqlite oder Mysql/ MariaDB
  • php-curl
  • php-mbstring
  • php-xml

Features:
  • Der Crawler wird per Kommandozeile gesteuert. Er berücksichtigt Ausschlussergeln der robots.txt, Meta-Anweisungen für no-index und no-follow, rel=nofollow in den Links als auch X-Robots.
  • Mit Hilfe von Regex lassen sich zusätzliche include und Exclude Regeln setzen.
  • Auf der Webseite befindet sich die Suche. Man kann mit UND Verknüpfung auch nach mehreren Begriffen suchen und die Suche auch auf Unterverzeichnisse einschränken.
  • Als Ressourcen werden von einer Webseite erfasst alle Links (A Href, Links im Html-Header, Frames + iFrames, Imagemaps), Bilder, CSS-Dateien, Javascripts. Für jede Ressource wird der Http-Status ermittelt wie auch die Abhängigkeiten (welche Seite verlinkt was) und in der Datenbank abgelegt. Im Backend lassen sich so Reports zu Fehlern und Hinweisen generieren.
  • Eingegebene Suchbegriffe werden aufgezeichnet und können statistisch ausgewertet werden.
  • Es gibt eine passwortgeschützte Weboberfläche. In dieser lassen sich für alle Profile einsehen: der Stand des Suchindex und die Suchbegriffe, Webseiten-Analyse mit fehlerhaften Links und Warnungen, Browsing und Filter durch alle Ressourcen
  • In einer Installation werden mehrere Domains für Suche/ Analyse unterstützt.

Lizenz:
  • GNU GPL v3 (Opensource)
Weitere Screenshots:

Einstellungen-Startseite
Programmeinstellungen
Profile: mehrere Domains können getrent analysiert werden.
Suchindex-Startseite
Suchindex: Status und Stand des Index
Suchbegriffe der Besucher
Top N der Suchbegriffe pro Zeitraum
Analyse - Startseite
Analyse: SSL Zertifikat und Http-only Ressourcen
Analyse: Http-Header und Warnungen
Analyse: Welche Cookies haben Besucher zu schlucken
Analyse: Test auf vorhandene Security Header
Analyse: Html-Check z.B. auf auf Metaangaben und Ladezeit
Analyse: Linkchecker Status
Analyse: Linkchecker mit Anzeige der gefundenen Http-Fehler
Analyse: Linkchecker mit Anzeige der gefundenen Http-Warnungen
Link-Details: Weiterleitungen und Verwendung eines Links
Ressourcen: filtere nach Status, Typ, MIME-Type ...
Analyse: Detailseite einer Ressource
Analyse: Detailseite einer Ressource
Imtegrated web based updater

Einleitung

Seit so einiger Zeit habe ich einen selbstgeschriebenen Crawler im Einsatz. Dieser durchsucht meine Webseite und baut eine Datenbank für einen Suchindex auf. Auslöser, einen eigenen Crawler zu schreiben war die Einstellung "meiner" bisherigen Suchengine "Sphider".

Im Crawler lassen sich mehrere Webseiten definieren, die unabhängig voneinander analysiert werden können.

Crawler

Der Crawler wird per Kommandozeile gesteuert. Er berücksichtigt Ausschlussergeln der robots.txt, Meta-Anweisungen für no-index und no-follow wie auch rel=nofollow in den Links.

Suche

Auf der Webseite befindet sich die Suche. Man kann mit UND Verknüpfung auch nach mehreren Begriffen suchen und die Suche auch auf Unterverzeichnisse einschränken.

Ressourcen

Als Ressourcen werden von einer Webseite erfasst

  • alle Links (A Href, Links im Html-Header, Frames + iFrames, Imagemaps)
  • alle Bilder
  • alle CSS-Dateien
  • alle Javascripts

Für jede Ressource wird der Http-Status ermittelt wie auch die Abhängigkeiten (welche Seite verlinkt was) und in der Datenbank abgelegt. Im Backend lassen sich so Reports zu Fehlern und Hinweisen generieren.

Backend

Es gibt eine passwortgeschützte Weboberfläche. In dieser lassen sich für alle Profile einsehen:

  • der Stand des Suchindex und die Suchbegriffe
  • Webseiten-Analyse mit fehlerhaften Links und Warnungen
  • Browsing und Filter durch alle Ressourcen

Status

Die Software ist im Betastatus. Sie ist in meiner Webseite eingebaut. Oben rechts ist interne Suche dazu. Es stehen Ergänzungen und Dokumentationen aus, damit meine Sammlung von Klassen zu einem einfach installierbaren Produkt werden. Der Quellcode ist auf Github.

Bitte etwas Geduld ;-)

 

... der Spider

  • verwendet eine Non-blocking Multicurl Klasse
  • leitet auf einen Content-Analyzer pro MIME Type weiter (zunächst text/html)
  • bleibt auf einer Domain
  • berücksichtigt nofollow in der robots.txt, die robots Angabe im Html Header und das rel=nofollow in html-Links
  • beachtet strikt include-Regeln der Konfiguration (Liste von Regex)
  • schliesst per exclude-Regeln weitere URLs aus (ebenfalls Regex)

... der Suchindex

  • ist eine PDO Datenbank (getestet: Sqlite und Mysql)
  • Datenbank-Zugriff ist durch eine Klasse gekapselt (jene unterstützt MySQL, MariaDB, MSSQL, Sybase, PostgreSQL, Oracle)
  • wird aktualisiert durch
    • einen Crawler (dieser aktualisiert die gesamte Site)
    • eine Update-Funktion für eine einzelne URL

... die Suche

  • verknüpft mehrere Worte mit AND
  • gewichtet ein Suchergebnis nach
    • Vorkommen in der URL, Schlüsselwörtern, Beschreibung und Content und
    • Art des Treffers: exaktes Wort, Treffer ab Wortanfang, Treffer irgendwo im Wort

... die Konfiguration

  • ist eine JSON Datei
  • mehrere Domains / Suchindexe als einzelne Profile verwaltbar

... das Backend

  • ist mehrsprachig ausgelegt (initial deutsch + englisch)
  • Anzeige des Status des Suchindex: neueste/ älteste Seiten im Index
  • Zugriff auf eingegebene Suchbegriffe inkl. Anzahl derer Treffer + Wiederholung derselben Suche im aktuellen Index
  • Statistik-Funktionen: Top N der Suchbegriffe letzte 7/ 30/ 90/ 365 Tage
  • Löschen von einzelnen/ allen Seiten im Suchindex

 

Screenshots:

Analyse deiner Webseite

Derzeit wird das Tool ausgebaut. Es entstand ein zusätzliches Modul, das alle verlinkten Elemente einer Webseite analysiert: Javascripts, CSS, Bilder, externe Links. Für alle Ressourcen werden Verlinkungen (Verwendungen) und Status erfasst.

Im Backend entsteht ein Analyse-Werkzeug, das deine Webseite durchleuchtet, von A-Z auseinandernimmt und Abhängigkeiten aufzeigen soll. Gibt es einen ungültigen 404 Link, können alle Seiten aufgezeigt werden, die dasselbe fehlerhafte Element enthalten.