Copyright ©
Mindbreeze GmbH, A-4020 Linz, 2024.
All rights reserved. All hardware and software names are brand names and/or trademarks of their respective manufacturers.
These documents are strictly confidential. The submission and presentation of these documents does not confer any rights to our software, our services and service outcomes or other protected rights.
The dissemination, publication or reproduction hereof is prohibited.
For ease of readability, gender differentiation has been waived. Corresponding terms and definitions apply within the meaning and intent of the equal treatment principle for both sexes.
.
Der Web Konnektor indiziert HTML-Dokumente und unterstützt mithilfe des „JavaScript Crawlings“ auch das Indizieren von Webseiten, welche JavaScript verwenden.
In dieser Dokumentation wird der Umgang und die Handhabung mit dem JavaScript Crawling im Zusammenhang mit erweiterten JavaScript Anwendungsfällen beschrieben.
Hinweis: Für die hier beschriebenen Anwendungsfälle sind Grundkenntnisse mit dem Umgang vom HTML und JavaScript erforderlich. Weiters sind Basiskenntnisse über den Aufbau der zu indizierenden Webseite notwendig.
Der Web Konnektor lädt die zu indizierenden Webseiten in diesem Modus direkt mittels eines einzigen HTTP Requests herunter. In diesem Modus ist es dem Konnektor nicht möglich, Webseiten mit dynamischen Inhalten richtig zu indizieren.
Der Web Konnektor lädt in diesem Modus die zu indizierenden Webseiten indirekt mittels JavaScript-Crawling herunter und ermöglicht es so auch Webseiten zu indizieren, die dynamisch mit JavaScript geladen werden.
Dieser Modus ist allerdings sehr leistungsaufwändig und sollte nur verwendet werden, wenn keine bessere Alternative zu Verfügung steht. Siehe Sektion 3.1.1
Für JavaScript-Crawling sind einige zusätzliche Einstellungen notwendig, die in den folgenden Abschnitten beschrieben werden.
Die folgende Tabelle zeigt die wichtigsten Eigenschaften und Unterschiede zwischen regulärem Web-Crawling und JavaScript-Crawling.
Webinhalte Kompatibilität | Reguläres Web-Crawling | JavaScript-Crawling |
Crawling-Effizienz | Hocheffizient | Sehr leistungsaufwändig |
Statische Webseiten | Werden vollständig indiziert | Werden vollständig indiziert |
Webseiten mit Authorisierung (die im regulären Crawling nicht unterstützt sind) | Werden mit Login-Maske indiziert, Indizierung nicht vollständig möglich | Automatisches Login ist möglich, um nur Inhalt zu indizieren |
Webseiten mit ungewollten Inhalten (Statische Cookie-Banner oder Werbung) | Ungewollten Inhalt wird indiziert | Ungewollter Inhalt kann versteckt werden |
Inhalte, die durch User-Input geladen werden | Manche Inhalte werden nicht geladen | User-Input kann simuliert werden. Alle Inhalte werden geladen und indiziert. |
Inhalte, die verzögert (lazy) geladen werden | Manche Inhalte werden nicht geladen | Der Crawler kann auf Inhalte warten. Alle Inhalte werden indiziert. |
Mit den folgenden Einstellungen kann reguliert werden, ob und welche Seiten mit JavaScript indiziert werden sollen. Weiters kann auch reguliert werden, ob nur Webseiten mit dem Content-Typ „text/html“ indiziert werden sollen (dieser wird in einem separaten HEAD-Request ermittelt).
Eine ausführliche Erklärung zu den unten aufgeführten Einstellungen können in der Dokumentation Konfiguration - Web Connector nachgelesen werden.
Die Idee hinter dieser feingranularen Konfigurationsmöglichkeiten ist es, JavaScript-Crawling selektiv nur für die Webseiten einzusetzen, für die es notwendig ist.
Wenn der Web Konnektor im JavaScript Modus betrieben wird (ohne weitere Einstellungen zu konfigurieren), wird der Webseiteninhalt geladen und wird indiziert sobald der eingestellte „Page Ready State“ erreicht ist. Falls der eingestellte „Page Ready State“ nicht innerhalb des „Network Timeouts“ erreicht wurde, wird ein Fehler geloggt und der Inhalt nicht indiziert.
Auch diese Einstellungen können hier nachgelesen werden.
Scripts sind JavaScript Code Fragmente, die für erweiterte Anwendungsfälle konfiguriert werden können. In den folgenden Abschnitten wird der Umgang mit Scripts beschrieben.
Wenn JavaScript-Fragmente ausgeführt werden, folgt der Programmablauf immer dem gleichen Muster das nur durch bestimmte Bedingungen unterbrochen wird. Das folgende Diagramm zeigt diesen Ablauf.
Wenn das Standardverhalten des Konnektors nicht ausreichend ist, (Beispielsweise wird eine Webseite nur mit unvollständigem Inhalt indiziert) ist es möglich einen „Content Presence Selector“ zu definieren. Dieser Selektor kann mittels XPath oder CSS-Selektoren angegeben werden und ändert die Bedienung zum Erkennen des Inhalts, sodass nun auf den Selektor gewartet wird. Dies eignet sich besonders für komplexe Webseiten, die länger zum Laden brauchen.
Für den Fall, dass verschiedene Websites mit unterschiedlichen Anwendungsfällen genutzt werden, kann für jeden Content Presence Selector ein oder mehrere URL-Patterns definiert werden. Diese Patterns legen fest, bei welchen URLs der Content Presence Selector ausgelöst werden kann.
Bei Webseiten, die z. B. Benutzereingaben brauchen oder komplexer aufgebaut sind, kann der Content Presence Selector mit der Einstellung Script erweitert werden.
Konfigurierte Skripts werden ereignisbasiert mithilfe von Script Trigger Selectoren ausgeführt. Außerdem werden Skript-Trigger-Selektoren nur dann überprüft, wenn die aktuelle URL mit den URL-Regex-Patterns (bei normalen Skripten) oder den erlaubten Hostnamen (bei Credential-Skripten) übereinstimmt.
Ein Script Trigger Selector prüft im DOM des Dokuments, ob eine bestimmte Bedingung eintritt. Sobald ein Script Trigger Selector auslöst, wird das zugehörige Script im Kontext der aktuellen Verarbeitung der Webseite ausgeführt.
Die Verarbeitung stoppt, wenn der „Content Presence Selector“ aktiv wird (wenn der gesuchte Inhalt geladen wurde).
Beispielsweise kann ein Script Trigger Selector erkennen, ob aktuell eine Benutzereingabe notwendig ist (z.B. ein Anmeldeformular wird angezeigt) und führt dann im zugehörigen Script Aktionen aus (z.B. ein Klick auf den Anmeldeknopf)
Diese Script Trigger Selectoren können mittels XPath und CSS angegeben werden.
Der Zweck eines Skripts besteht hauptsächlich darin, grundlegende Aktionen wie Scrollen, Schließen von Cookie-Bannern usw. auszuführen. Skripts dieser Art können entsprechend dem Anwendungsfall angepasst werden.
Ein Credential Script ist ein normales Skript, das einige Sicherheitsverbesserungen beinhaltet:
Es dürfen keine Skripts angegeben werden, bei denen in einer Schleife Inhalt geladen wird. Skripts werden single threaded ausgeführt und blockieren im Falle einer Schleife jegliche Aktionen vom Browser (Beispiel Anwendungsfall: Unendliches Scrollen)
Wenn ein Skript sehr oft und über einen längeren Zeitraum ausgeführt werden soll (scrollen) muss darauf geachtet werden, dass sowohl das „Network Timeout“ als auch das „Page Load Timeout“ hoch genug ist.
Es dürfen keine Listener in den Skripts verwendet werden, da der Kontext zwischen den einzelnen Skriptausführungen verloren geht.
In manchen Fällen gibt es keinen eindeutigen Content Presence Selector. Dies kann der Fall sein, wenn Elemente des Inhalts bereits in das DOM geladen wurden, bevor das Skript ausgeführt wurde.
Für diese spezielle Fälle gibt es die Einstellung „Assume Content if no Script triggered“. Wenn diese Einstellung gesetzt ist, wird die Verarbeitung gestoppt, sobald kein einziger Script Trigger Selector mehr aktiv ist und die Webseite wird in diesem Zustand indiziert.
Hinweis: Bei Webseiten deren Inhalte verzögert geladen werden, ist Vorsicht geboten, da diese Einstellung dazu führen kann, dass nachfolgende Scripts nicht mehr ausgeführt werden und der Inhalt möglicherweise vorzeitig und unvollständig Indiziert wird.
In diesem Beispiel wird erklärt, welche Schritte für die Einrichtung des Mindbreeze Web Konnektors zum Crawlen einer Intranet-Webseite mit (im regulären Crawling) nicht unterstützter API Authentifizierung notwendig sind.
Die zu indizierende Webseite muss zunächst analysiert werden. Nachdem das Indizieren mit JavaScript sehr leistungsaufwendig ist, sollten zuerst folgende Fragen beantwortet werden:
Falls für die Webseite keine der oben genannten Alternativen existiert, fahren wir mit dem JavaScript-Crawling fort. Der nächste Schritt ist die Analyse des Verhaltens der Website.
Um das Verhalten der Webseite analysieren zu können, muss zuerst sichergestellt werden, dass die nötigen Anmeldedaten (Benutzername, Passwort) vorhanden sind und dass die Anmeldung mit einem Browser (z.B.: Chrome, Firefox) funktioniert.
Nachdem die Anmeldung im Browser erfolgreich war, stellen Sie sicher, dass alle zu indexierenden Inhalte zugänglich sind. (Möglicherweise hat der Benutzer nicht ausreichend Berechtigungen, um die relevanten Inhalte zu sehen)
Wenn alle Inhalte korrekt angezeigt werden, werden die einzelnen Seiten im Detail analysiert.
Für die Analyse der einzelnen Seiten muss zwischen drei Arten unterschieden werden:
Hinweis: 2-Faktor-Authentifizierungen können NICHT unterstützt werden.
Die Inhaltsseiten repräsentieren die Seiten, die indiziert werden sollen. Hier gilt zu analysieren wie der Inhalt aufgebaut ist.
Folgende Punkte sind hier zu beachten:
Bei Webseiten, die auf andere Seiten weiterleiten, muss beachtet werden, dass der Web Konnektor standardmäßig aus Sicherheitsgründen alle unbekannten Hosts blockiert. (Fehlercode BLOCKED_BY_CLIENT)
Um andere Hosts zuzulassen müssen diese als „Additional Network Resources Hosts“ in den Einstellungen angegeben werden.
Hinweis: Dies gilt auch für Sitemaps. Hier müssen alle relevanten Hosts als „Additional Network Resources Hosts“ angegeben werden.
Wenn die Analyse dieser Seiten abgeschlossen ist kann nun begonnen werden die Anmeldung mittels JavaScript in der Developer Konsole des Browsers (F12) nachzustellen.
Der erste Schritt besteht darin, die Elemente des Login Fensters (z.B.: Username, Password, Anmelde-Knopf) zu lokalisieren und den entsprechenden Selektor zu notieren.
Für die Login Seite eignet sich der Selektor für das Formular sehr gut als „Script Trigger Selector“ jedoch können mit XPath auch komplexere Selektoren angegeben werden, die beispielsweiße die Kombination aus Benutzername und Passwort ID suchen.
(//*[@id='username'] and //*[@id='password'])
Sind die Selektoren notiert, können diese im Konsolen Tab der Developer Konsole wie folgt getestet werden:
Wenn alle Elemente der Login Seite gefunden wurden, kann damit begonnen werden, den Ablauf der Anmeldung in der Konsole nachzustellen:
Wenn die Anmeldung über die Developer Konsole erfolgreich war, können die drei Befehle mit dem zugehörigen Script Trigger Selector als eigenständiges Credential-Skript im Management Center angelegt werden.
Die Inhaltsseiten enthalten die gewünschten, zu indizierenden Inhalte. Sie können mehrere Content Presence Selectors definieren, um diese Inhaltsseiten zu identifizieren. Es ist wichtig, dass alle Content Presence Selectors relativ streng konfiguriert werden. Der Grund dafür ist, dass die Content Presence Selectors nur auf die gewünschten URLs angewendet werden sollen. Dies wird in der Einstellung URL Patterns definiert. Außerdem sollte der CSS- oder XPath-Wert des Content Presence Selectors präzise definiert sein, damit auch auf verzögertes Laden der gewünschten Inhalte gewartet wird.
Für diesen Schritt ist ebenfalls wichtig, dass ALLE Seiten geprüft werden (nicht nur Start-/ Login-Seite).
In manchen Fällen kann es vorkommen, dass auch für die Inhaltsseiten spezielle Benutzerinteraktionen ausgeführt werden müssen, um den endgültigen Inhalt zu sehen. Hierfür werden ebenfalls Skripte konfiguriert, wobei die Vorgangsweise dieselbe wie beim Login-Skript ist.
Weitergeleitete Seiten verhalten sich wie normale Inhaltsseiten, und werden genau wie diese behandelt.
Wenn Benutzerinteraktionen nötig sind muss ein Skript konfiguriert werden, ansonsten wird das Standardverhalten des JavaScript Prozess ausgeführt.
Wenn auf Hosts verlinkt wird, welche nicht der konfigurierten „Crawling Root“ Hosts entsprechen, müssen diese zusätzlich als Additional Network Resources Hosts angegeben werden.
In diesem Beispiel wird erklärt, welche Schritte für die Einrichtung des Mindbreeze Web Konnektors zum Crawlen von Webseiten mit Akkordeons notwendig sind.
Wenn die Webseite den Inhalt des Akkordeons in den DOM lädt, müssen keine weiteren Schritte zum Aufklappen dieser getätigt werden.
Ansonsten muss gecheckt werden, ob es sich bei der Webseite um eine Single Page Applikation handelt, da diese aktuell nicht unterstützt werden. (Einschränkungen der "Enable JavaScript" Option). Diese Einschränkung kann jedoch in gewissen Fällen umgangen werden.
Grundsätzlich ist es zum Laden des Inhalts wichtig, dass es bei Akkordeons die Möglichkeiten gibt:
Für beide Arten sind Benutzerinteraktionen notwendig und das Ziel ist es, den gesamten Inhalt in den DOM zu laden.
Wenn alle Elemente des Akkordeons gleichzeitig ausklappbar sind reicht ein Skript, das auf die jeweiligen Schaltflächen klicken um den Inhalt zu laden.
Wenn nicht alle Elemente gleichzeitig ausklappbar sind, wird zuerst ein Skript benötig um diesen Mechanismus zu deaktivieren, da ansonsten nicht der ganze Inhalt vorhanden ist.
Dieser Mechanismus kann mittels JavaScript auf der Webseite implementiert sein, jedoch auch durch die Eigenschaften des verwendeten Frameworks bestimmt werden.
Bei Unklarheiten dahingehend sollten die Webentwickler der Webseite kontaktiert werden, um die Möglichkeiten zur Deaktivierung dieses Mechanismus abzuklären.
Wenn der Mechanismus deaktiviert ist kann wie zuvor ein Script die einzelnen Akkordeonelemente aufklappen.
In diesem Beispiel wird erklärt, welche Schritte für die Einrichtung des Mindbreeze Web Konnektors zum Crawlen von Webseiten, die unendliches Scrollen unterstützen, notwendig sind.
Wenn die Webseite den kompletten Inhalt in den DOM lädt, müssen keine weiteren Schritte zum Scrollen getätigt werden.
Wenn dies nicht der Fall muss mit einem Skript bis zum Ende der Seite gescrollt werden, sodass der ganze Inhalt im DOM verfügbar ist.
Die Schwierigkeit dabei ist es zu erkennen, wann man ganz unten angekommen ist, da dies bei Webseiten nicht einheitlich ist.
Bei Webseiten die am Ende der Liste eine „Keine weiteren Ergebnisse“ Benachrichtigung, die nicht immer im DOM existiert, einblenden reichen ein „Content Presence Selector“ der diese Benachrichtigung adressiert, sowie ein Skript das nur hinunter scrollt aus.
Wenn die Benachrichtigung immer im DOM vorhanden ist, muss wie bei Ladeanimationen versucht werden das Ende des Dokuments zu ermitteln.
Wenn keine Benachrichtigung am Ende der Liste vorhanden ist, muss mittels eines Scripts und der Einstellung „Assume Content if no Script triggered“ herausgefunden werden wann das Ende dieser erreicht wurde.
Dazu können die Ladeanimation der Liste, sowie mehrere Höhenparameter verwendet werden.
Um die Iteration des Skripts zu beenden muss beim Erreichen des Endes der Liste der verwendete „Script Trigger Selector“ im HTML geändert werden.
Bei der zu indizierende Webseite muss bis ganz unten gescrollt werden um alle Elemente anzeigen zu können. Solange die Liste mit den Elementen gefunden wird soll versucht werden hinunter zu scrollen. Wenn das Ende dieser Liste erreicht wurde, wird eine Nachricht mit „Keine weiteren Ergebnisse“ angezeigt.
Das Skript wird so lange ausgeführt bis der Content Presence Selector triggert (das Ende erreicht wurde).
Bei der zu indizierende Webseite muss bis ganz unten gescrollt werden um alle Elemente anzeigen zu können. Solange die Liste mit den Elementen gefunden wird soll versucht werden hinunter zu scrollen. Wenn weitere Ergebnisse verfügbar sind wird dies mit einer Ladeanimation angezeigt. Wenn das Ende dieser Liste erreicht wurde, wird keine Nachricht angezeigt.
if (window.innerHeight + window.pageYOffset == document.body.offsetHeight &&
document.getElementsByClassName('element-list').length == 0)
{
document.getElementsByClassName('element-list')[0].className =
'element-list-done';
} else {
window.scrollTo(0, document.body.scrollHeight);
}
Der Abschnitt zum Überprüfen ob man bereits fertig hinunter zu scrollen, erfolgt hier durch die Bedingungen
window.innerHeight + window.pageYOffset == document.body.offsetHeight
document.getElementsByClassName('element-list').length == 0
Der erste Teil checkt ob das Ende des Dokuments erreicht wurde. Da dieses Script jedoch sehr oft ausgeführt wird kann es vorkommen, dass das Ende durch den Ladebalken, der signalisiert, dass noch mehr Objekte geladen werden, erreicht wird. Um dies zu vermeiden wird auch der Ladebalken auf sein Vorhandensein geprüft.
Wenn beide Bedingungen erfüllt sind, wird der Tag der als Content Trigger Selector dient, geändert damit das Script nicht weiter triggert. Ansonsten wird weiter nach unten gescrollt.
Wenn mittels JavaScript Text eingefügt wird (Eingabe des Benutzername) kann es vorkommen, dass beim anschließenden Klick auf Weiter/Enter/… dieser nicht erkannt wird bzw. der Text „geben Sie eine gültige Email ein“ auftaucht.
Dies ist zum Beispiel beim Login auf „login.microsoftonline.com“ der Fall und geschieht, weil hinter dem Feld eine Interaktionsvalidierung steckt die bei einer Eingabe mit JavaScript nicht getriggert wird, und das Feld deshalb als leer erkannt wird.
Um dieses Verhalten auf „login.microsoftonline.com“ zu umgehen, muss ein Event getriggert werden um das Benutzerverhalten zu simulieren.
const benutzername = document.getElementById('benutzername');
const weiter = document.getElementById('weiter');
const event = new Event('change');
benutzername.value = mesCredential.username;
benutzername.dispatchEvent(event);
weiter.click();
Wenn Sie in einem indizierten Dokument auf Inhalte stoßen, die Sie auffordern, JavaScript zu aktivieren, wurde der „Content Presence Selector“ möglicherweise nicht aktiviert oder so eingestellt, dass er bereits auslöst, bevor die Webseite vollständig geladen wurde.
Dies führt dazu, dass der Content zu früh indiziert wird und die Nachricht nicht aus dem DOM gelöscht wird. Definieren Sie bitte einen präziseren „Content Presence Selector“, der den zu indizierenden Inhalt vollkommen inkludiert.
Wenn zu wenige, zu viele, unvollständige oder keine Dokumente indiziert werden, prüfen Sie die folgenden Punkte:
In diesem Abschnitt werden die wichtigsten Logs, die für die Analyse des Web Konnektors im JavaScript Modus benötigt werden, aufgeführt.
Alle Log-Pfade werden ausgehend von folgendem Pfad angegeben: /data/logs/crawler-log/current
Zuerst sollten die allgemeinen Logs des Web Konnektor Logs überprüft werden. Die wichtigsten dafür sind:
Wenn aus diesen Logs keine nützlichen Informationen gewonnen werden können, müssen die Logs des JavaScript-Prozesses überprüft werden.
Um alle diese Log Dateien zu erhalten, muss im Management Center unter Advanced Settings die Einstellung „Enable Verbose Logging“ aktiviert werden.
Alle folgenden Logs werden ab folgendem Pfad angegeben:
/data/logs/crawler-log/current/log-webdriver-webdriver/current
Die allgemeinen Logs zum JavaScript Prozess sind:
Die erweiterten Logs zum JavaScript Prozess sind:
Wenn Webseiten nicht indiziert werden, können häufig Timeouts der Grund dafür sein.
Dazu gibt es die zwei Einstellungen „Page Load Timeout“ und „Network Timeout“.
Sollten Sie eine der folgenden Fehlermeldungen sehen:
TimeoutException: Waiting for the pages readyState took too long.
TimeoutException: Couldn't find content in time. …
befolgen Sie diese Schritte:
In AppTelemetry wechseln Sie zum LogPool „Network Requests“ und wählen Sie „View Telemetry Data“.
Um eine bessere Übersicht über die Requests zu bekommen, filtern Sie nach dem Service „Network Requests – webdriver-webdriver“ und der aktuellen Thread ID, um eine Übersicht zum gesamten Request zu bekommen.
Vergleichen Sie nun anhand der URLs, ob die Zeiten ungefähr im selben Bereich liegen. Beachten Sie jedoch, dass der Crawler mögliche Benutzerinteraktionen schneller erledigt und diese Requests nicht vergleichbar sind.
Wenn die Zeiten sehr stark abweichen, kann es sich um ein Netzwerkproblem zwischen der Mindbreeze Appliance und dem Ziel-Server handeln.
Sollten Sie solche Verbindungsprobleme feststellen, kontaktieren Sie die zuständigen Personen in Ihrer Organisation.
In manchen Fällen verhindert eine robots.txt-Datei der Webseite das korrekte crawlen.
Dies ist im crawl.log (siehe 5.2 Logs) ersichtlich, wenn keine anderen Seiten neben der robots.txt auftauchen.
Dieses Verhalten kann durch die Einstellung „Exclude JavaScript URL (regex)“ umgangen werden. (.*robots.txt)
Wenn „Content Presence Selector“ oder „Script Trigger Selector“ bei Inhalten nicht wie erwartet ausgeführt werden, sollte das Log „/current/log-webdriver-webdriver/current/chromedriver-logs/driver-actions.log” überprüft werden.
Dort suchen Sie nach: „isElementPresent“. An dieser Stelle werden die Selektoren verarbeitet, und im Falle von Syntax Fehlern würden diese im Leave-Event angezeigt werden. Im folgenden Screenshot sehen Sie einen Log-Eintrag ohne Syntaxfehler.
Wichtig dabei ist zu beachten, dass Selektoren nur mit einfachen Anführungszeichen angegeben werden sollen. Sollten doppelte Anführungszeichen verwendet werden, müssen diese vorher mit „\“ escaped werden.
In manchen Fällen kann es vorkommen, dass keine Skripts ausgeführt werden und falscher Inhalt indiziert wird.
Dies passiert, wenn der „Content Presence Selector“ bereits im DOM verfügbar ist, aber noch nicht angezeigt wird. Das kann dazu führen, dass die Ausführung des Skrips nicht stattfindet und der Inhalt sofort indiziert wird.
Ein Beispiel dafür wäre ein Pop-Up auf einer Webseite (Werbebanner), das weggeklickt werden soll. Der zu indexierende Inhalt inklusive „Content Presence Selector“ ist jedoch bereits im DOM geladen, weshalb das Skript nie ausgeführt wird.
In diesem Fall muss der „Content Presence Selector“ präziser gewählt werden und entsprechend für das zu entfernende Element angepasst werden.
Wenn ein „Content Presence Selector“ nicht definiert werden kann (ändernde IDs, Inhalt immer im DOM, …) kann auch mittels Scripts in bestimmten Fällen ein HTML Element definiert werden, das dann wiederum als „Content Presence Selector“ fungiert.
Dies ist jedoch nur zu verwenden wenn keine andere Möglichkeit besteht, einen Selektor zu definieren.
if (!document.getElementById('banner') {
document.body.appendChild(document.createElement('exit'));
}
XPath:
//*[@id='content']
//*[@id=\"content\"]
CSS:
a[href^= 'https']
a[href^=\"https\"]
XPath:
//*[@id="content"]
CSS:
a[href^="https"]
Wenn Sitemaps von einem Filesystem importiert werden und nicht mit einer URL, dann muss der root host explizit in den „Additional Network Resources Hosts“ angegeben werden da dieser nicht durch die URL ermittelt werden kann.
Manchmal wird für Dokumente im chromedriver-network.csv die “Status Code Description” “net:ERR_ABORTED” angezeigt.
Wenn dies der Fall ist, muss speziell auf die Spalten “Website URL” und „Network Resource URL“ geschaut werden, welche die angeforderte URL und die aktuelle URL anzeigen.
Diese sind meist unterschiedlich da die aktuell URL die angeforderte Ressource (jpg, js, svg, redirected url, …) repräsentieren.
Nach diesen URLs kann nun im cdp-logs.csv Dokument gesucht werden um eine detaillierte Beschreibung des Fehlers zu bekommen.
Wenn dieser Fehler auftritt, wurden spezifische Hosts nicht für den Crawler freigeschalten. Dies passiert mit der Einstellung „Additional Network Resources Hosts“.
Um alle benötigten Hostnames herauszufinden, können die Developer Tools (F12) von Chrome verwendet werden um nach Domänen zu filtern.
Um ein korrektes Verhalten des Crawlers sicherzustellen, müssen ALLE Hostnames hinzugefügt werden.