#################### EASYSPIDER 2 ######################### A.) RICHTLINIEN #!/usr/bin/perl -Tw use strict; use warnings; use log4perl; use Data::Dumper; objekte werden in der form $CONFIG_OBJ erstellt require "modul.pm" lädt die funktionalitäten aus dem modul nur dann, wenn es gebraucht wird use MODULNAME qw{_explizit_function_name, function2, function_3_to_use}; B.) FUNKTIONSARTEN slow mode: - oberste maxime: speicherschonende programmierung -> mehr I/O zugriffe generieren, da platten heutezutage schnell sind, ram jedoch meistens knapp normal mode: - caching benutzen speed mode: - so viel wie möglich im speicher behalten C.)unterstüzung: -> für http, https, ftp, sftp, pop, imap, SMTP, ssh, soap, sql D.)SCANNING MODE: speedoptionen angeben im spider: - slow{kaum memory verbrauch} = normal sequentiell {ein prozess } - normal = slow + keep-alive { eein prozess arbeitet mit keepalive beim http::requestn} - fast = nomal + fork {erstellen eines neuen prozesses, der dann auch arbeiten kann, für jeden mit fork erstellten prozess wird die funktionalität von normal nachgebildet} - extrem = fast + LWP::PARALLEL_REQUESTS { wie fast, bloss das bei den requests jetzt parallele anfragen an den server gestellt werden } - ultra_fast{viel memory verbrauch} = extrem + ithreads support { für jeden ithread bilde die funktionalität nach, die extrem beschreibt - sprich ein ithread scannt im extrem modus} E.)ideensammlung für spider - der client, der spidert, eröffnet selbst einen server und stellt , während er scannt die ergebnisse als xml stream da, sodass man sich auf diesen client-server-spider hin verbinden kann und gleich ergebnisse bekommt - speedrelated sachen nicht objektorientiert prograammieren http://search.cpan.org/author/BIGJ/Lingua-DE-ASCII-0.11/ASCII.pm http://search.cpan.org/~kilinrax/HTML-Strip-1.04/ SERVER: - http://search.cpan.org/dist/Net-Server/ Encryption: - Saltgeneration: http://search.cpan.org/src/HACHI/Crypt-Salt-0.01/lib/Crypt/Salt.pm - http://bcrypt.sourceforge.net/ - http://sourceforge.net/projects/ccrypt - http://ccrypt.sourceforge.net/--> wahl fällt hierrauf , ist am schnellsten, pipt CRC: - http://search.cpan.org/src/OLIMAUL/Digest-CRC-0.09/lib/Digest/CRC.pm MEMORY: sub _freeMemory { my $arrayref = shift; eval { foreach (@{arrayref}){ undef; }; undef @{arrayref}; undef $arrayref; }; return @! ? 1; # gib fehler oder 1 für success zurück }; SECURITY: - sub _checkInputLenght() { security funktion, die prüfen, wie lange eine (user input) string ist if ( input > MAX_STRING_LENGTH) { if ( isset( STRIKQUOTE ) ) { return _striceQuote(_chopMaxLenght( input, MAX_STRING_LENGTH )); } elsif ( isset( STRIKQUOTE ) ) AND isset( USERDEFINDEDQUOTE ) ) { return _userdefinedQuote( _striceQuote( _chopMaxLenght( input, MAX_STRING_LENGTH ))); } elsif ( isset( USERDEFINDEDQUOTE ) ){ return _userdefinedQuote( _chopMaxLenght( input ) ); } else { return _striceQuote(_chopMaxLenght( input, MAX_STRING_LENGTH )); } } else { if ( isset( STRIKQUOTE ) ) { return _striceQuote( input, MAX_STRING_LENGTH )); } elsif ( isset( STRIKQUOTE ) ) AND isset( USERDEFINDEDQUOTE ) ) { return _userdefinedQuote( _striceQuote( input, MAX_STRING_LENGTH )); } elsif ( isset( USERDEFINDEDQUOTE ) ){ return _userdefinedQuote( input ); } else { return _striceQuote( input, MAX_STRING_LENGTH ); } } } # sub _checkInputLenght() {} sub _striceQuote() { - quotingfunktion aus zoozle4 übernehmen } sub _userdefinedQuote(){ - predefined werte, die automatisch entschärft werden }; sub _chopMaxLenght(){ chop until MAX_STRING_LENGTH; }; CACHING: - memory(); - http://search.cpan.org/src/MILLAWAY/Cache-FastMemoryCache-0.01/FastMemoryCache.pm TEMPORÄRE DATEIEN: - use File::Temp;