Fehlersuche im WWW - die Spinne zum Netz IFC-Vortrag
Aufgabenstellung Automatisches rekursives Absuchen von Web-SeitenAutomatisches rekursives Absuchen von Web-Seiten Fehlererkennung und -protokollierungFehlererkennung und -protokollierung Darstellung im Web-BrowserDarstellung im Web-Browser Ergebnis per Ergebnis per Überwachung über TCP/IP und im BrowserÜberwachung über TCP/IP und im Browser
Die Grundlage web robotsweb robots konfigurierbarkonfigurierbar Source-CodeSource-Code ACME-Paket in JavaACME-Paket in Java
Die Hauptschleife von Spider Spider as = new Spider(System.err); as.addUrl(args[0]); while ( as.hasMoreElements() ) { URLConnection uc = (URLConnection) as.nextElement(); InputStream s = uc.getInputStream(); while ( s.read() != -1 ); s.close(); }
Aus Acme.Spider wird die Spinne Fehlersuche statt Link-ErnteFehlersuche statt Link-Ernte FehlererkennungFehlererkennung FehlerausgabeFehlerausgabe Effizienzsteigerung und Entfernen von bugsEffizienzsteigerung und Entfernen von bugs
Die Link-Auslese if (excludePath) { pathOk=true; for (int i=0; i<path.length && pathOk; i++) pathOk=!file.startsWith(path[i])); } else { pathOk=false; for (int i=0; i<path.length && !pathOk; i++) pathOk=file.startsWith(path[i])); } if (pathOk && ip.equals( InetAddress.getByName(url.getHost()).getHostAddress() )) return true;
Die Fehlererkennung Exception tioe = new FileNotFoundException("TimeOut"); Thread t=new Thread() { public void run() { uc.connect(); /* HeaderField ok ? 20* oder 30* ?*/ /* InputStream ok ?Content-Type ok ?*/ tioe=null; } t.start(); t.join(TIMEOUT); t.stop();
Aus der Spinne wird die Netzspinne Konfiguration über html-FormKonfiguration über html-Form Start als cgi-SkriptStart als cgi-Skript Ausgabe in htmlAusgabe in html Ergebnis als Ergebnis als Statusinformation per JavaScriptStatusinformation per JavaScript Kontrolle via TCP/IPKontrolle via TCP/IP
Beispiel
Unvermeidbare Probleme ftp:, telnet:, mailto: usw.ftp:, telnet:, mailto: usw. 302 Redirect302 Redirect302 Redirect302 Redirect 403 Forbidden403 Forbidden cgi-Skriptecgi-Skriptecgi-Skripte
Einschränkungen DatenmengeDatenmenge bugsbugs
Resultat Technisch: leidlich stabilleidlich stabil Netzspinne ist einsetzbarNetzspinne ist einsetzbarPersönlich: ständiger Praxistestständiger Praxistest viel gelerntviel gelernt
That‘s all, folks!