Copertina
Autore Michael Schrenk
Titolo Webbot e spider
SottotitoloI ragni della Rete
EdizioneApogeo, Milano, 2007, Guida completa , pag. 306, ill., cop.fle., dim. 17x24x2 cm , Isbn 978-88-503-2658-7
OriginaleWebbots, Spiders, and Screen Scrapers
TraduttoreGerlando Falauto, Giulia Sarullo, Federico Facca
LettoreGiorgia Pezzali, 2008
Classe informatica: linguaggi , informatica: reti
PrimaPagina


al sito dell'editore


per l'acquisto su IBS.IT

per l'acquisto su BOL.IT

per l'acquisto su AMAZON.IT

 

| << |  <  |  >  | >> |

Indice


Introduzione                                              XVII

Tecnologia client-server vecchia scuola                   xvii
I limiti dei browser                                     xviii
Cosa potete aspettarvi da questo libro                     xix
    Imparare dai miei errori                               xix
    Impadronirsi delle tecniche                            xix
    Sfruttare script esistenti                             xix
Il sito web                                                 xx
Il codice                                                  xxi
Prerequisiti                                               xxi
    Hardware                                              xxii
    Software                                              xxii
    Accesso a Internet                                    xxii
Esclusione di responsabilità (importante!)                xxii


Parte I - Concetti e tecniche fondamentali                   1


Capitolo 1 - Cosa vi offre questo libro?                     3

Scoprire il vero potenziale di Internet                      3
Cosa offre agli sviluppatori?                                4
    Grande richiesta di sviluppatori di webbot               4
    I webbot sono divertenti da scrivere                     4
    I web robot facilitano l'"hacking costruttivo"           5
Cosa offre ai manager?                                       5
    Personalizzare Internet per la vostra azienda            5
    Trarre vantaggio dall'inesperienza del pubblico
    con i webbot                                             6
    Ottenere molto con un piccolo investimento               6
Considerazioni finali                                        6

Capitolo 2 - Alcune idee per progetti basati su web robot    7

L'ispirazione indotta dalle limitazioni dei comuni browser   7
    Webbot che aggregano e filtrano le informazioni
    in base alla loro importanza                             8
    Webbot che interpretano quello che trovano               9
    Webbot che agiscono per procura                          9
Alcune idee folli per iniziare                              10
    Aiutare un dirigente impegnato                          11
    Risparmiare automatizzando                              11
    Proteggere la proprietà intellettuale                   12
    Ricercare opportunità                                   12
    Controllare i diritti di accesso di un sito web         12
    Creare un servizio di "ritaglio articoli online"        13
    Ricostruire una mappa di reti Wi-Fi non autorizzate     13
    Tracciare le tecnologie web                             13
    Permettere la comunicazione tra sistemi incompatibili   14
Considerazioni finali                                       14

Capitolo 3 - Scaricare pagine web                           15

Pensare a file, non a pagine web                            16
Scaricare file con le funzioni integrate di PHP             16
    Scaricare file con fopen() e fgets()                    17
        Creazione del primo script di webbot                17
        Esecuzione di un webbot da una shell
        (riga di comando)                                   18
        Esecuzione di un webbot da un browser               18
    Scaricare file con file()                               20
Introduzione a PHP/CURL                                     20
    Molteplici protocolli di trasferimento                  20
    Invio di form                                           21
    Autenticazione Basic                                    21
    Cookie                                                  21
    Redirection                                             21
    Imitare gli Agent Name                                  22
    Gestione del referer                                    22
    Gestione dei socket                                     22
Installazione di PHP/CURL                                   23
LIB_http                                                    23
    Familiarizzare con i valori predefiniti                 23
    L'uso di LIB_http                                       24
        http_get()                                          24
        http_get_withheader()                               24
    Ulteriori informazioni sugli header HTTP                27
    Analisi del codice sorgente di LIB_http                 27
        I valori predefiniti di LIB_http                    27
        Funzioni di LIB_http                                28
Considerazioni finali                                       28

Capitolo 4 - Tecniche di parsing                            29

Effettuare il parsing di codice HTML scritto male           29
Routine di parsing standard                                 30
Usare LIB_parse                                             30
    Dividere una stringa con un separatore: split_string()  31
    Estrarre il testo compreso tra due separatori:
    return_between()                                        31
    Estrarre un insieme di dati per ottenere un array:
    parse_array()                                           33
    Estrarre i valori degli attributi: get_attribute()      34
    Rimuovere porzioni di testo non desiderate: remove()    36
Alcune funzioni PHP                                         36
    Riconoscere una stringa contenuta in un'altra stringa   36
    Sostituire una porzione di stringa con un'altra stringa 37
    Rimuovere la formattazione dal testo                    37
    Misurare la somiglianza tra stringhe                    38
Considerazioni finali                                       38
    Non fidarsi di una pagina web fuori standard            38
    Tentare il parsing a piccoli passi                      39
    Non formattare il testo durante il debugging            39
    Prestare attenzione nell'uso delle espressioni regolari 39

Capitolo 5 - Automatizzare l'invio di form                  41

Reverse engineering dei form                                42
Form handler, campi dati, metodi ed event trigger           42
    Form handler                                            43
    Campi dati                                              44
    Metodi                                                  45
        Il metodo GET                                       45
        Il metodo POST                                      46
    Event Trigger                                           47
Form imprevedibili                                          47
    JavaScript può modificare un form appena prima
    dell'invio                                              47
    Il form HTML è spesso illeggibile per le persone        48
    I cookie non sono inclusi nel form,
    ma possono influenzare le operazioni                    48
Analizzare un form                                          48
Considerazioni finali                                       52
    Non farsi scoprire                                      52
    Imitare correttamente i browser                         52
    Evitare errori di form                                  53

Capitolo 6 - Gestire grandi quantità di dati                55

[...]


Parte II - Applicazioni                                     71


Capitolo 7 - Webbot per monitorare i prezzi                 73

[...]

Capitolo 8 - Webbot per catturare immagini                  81

[...]

Capitolo 9 - Webbot per verificare i link                   89

[...]

Capitolo 10 - Webbot per la navigazione anonima             97

[...]

Capitolo 11 - Webbot per valutare il rank delle proprie
              pagine                                       107

[...]

Capitolo 12 - Webbot di aggregazione                       119

[...]

Capitolo 13 - Webbot FTP                                   129

[...]

Capitolo 14 - Webbot per NNTP News                         135

[...]

Capitolo 15 - Webbot per leggere e-mail                    145

[...]

Capitolo 16 - Webbot per inviare e-mail                    153

[...]

Capitolo 17 - Convertire un sito web in una funzione       163

[...]

Capitolo 18 - Spider                                       173

[...]

Capitolo 19 - Webbot che acquistano per procura            183

[...]

Capitolo 20 - Webbot e crittografia                        193

[...]

Capitolo 21 - Autenticazione                               197

[...]

Capitolo 22 - Gestione automatica dei cookie               209

[...]

Capitolo 23 - Pianificazione di webbot e spider            215

[...]




Parte IV - Considerazioni più ampie                        223


Capitolo 24 - Progettare webbot e spider che non danno
              nell'occhio                                  225

[...]

Capitolo 25 - Scrivere webbot affidabili                   233

[...]

Capitolo 26 - Progettare siti web webbot-friendly          245

[...]

Capitolo 27 - Bloccare gli spider                          255

[...]

Capitolo 28 - Tenere i webbot lontani dai guai             265

[...]

Appendice A - Riferimenti PHP/CURL                         275

[...]

Appendice B - Codici di stato                              285

[...]

Appendice C - Indirizzi e-mail SMS                         289


Indice analitico                                           293


 

 

| << |  <  |  >  | >> |

Pagina xvii

Introduzione


Il giorno che conobbi per la prima volta il World Wide Web fu anche il giorno che segnò l'inizio del mio rapporto con i browser. Il primo browser che usai fu Mosaic, un'invenzione pioneristica di Eric Bina e Marc Andreessen. Lo stesso Andreessen che qualche tempo più tardi avrebbe fondato Netscape.

Nel giro di poco tempo iniziai ad associare le magie di Internet con la semplicità del browser. Semplicemente facendo clic su un hyperlink, potevo ammirare i tesori del Louvre; seguendo un altro link, potevo scoprire interessanti curiosità sulla Famiglia Brady (durante il mio primo approccio con il World Wide Web incappai proprio in un fan site della Famiglia Brady). Il browser era molto più di una semplice applicazione che facilitava l'utilizzo del World Wide Web: il browser era il World Wide Web! In pratica una nuova forma di televisione. Così come la televisione permetteva di ricevere segnali video remoti con due semplici manopole per il canale e il volume, il browser nascondeva la complessità di Internet attraverso collegamenti ipertestuali, preferiti e pulsanti indietro.


Tecnologia client-server vecchia scuola

La mia più grossa scoperta fu apprendere che non avevo bisogno di un browser per visualizzare una pagina web. Realizzai che anche Telnet, un programma usato sin dagli anni Ottanta per comunicare con altri computer connessi in rete, permetteva di scaricare pagine web, come mostrato in Figura 1.

Tutto a un tratto, il World Wide Web era diventato qualcosa che potevo interpretare anche senza un browser. Conoscevo già abbastanza bene le architetture client-server, in cui un semplice client permetteva l'accesso a risorse situate su un server remoto. La differenza in questo caso era che il client era il browser e il server forniva pagine web.

L'unico aspetto rivoluzionario era il fatto che, a differenza delle applicazioni client-server diffuse fino a quel momento, i browser erano semplici da utilizzare per chiuque, e avrebbero ben presto avuto una diffusione di massa. Gli utenti di Internet non erano più solo laureati in fisica e programmatori, ma anche gente comune. Sfortunatamente, il grande pubblico non aveva idea di cosa fosse la tecnologia client-server, restando quindi fortemente legato ai browser. Non era affatto ovvio che esistessero anche altri modi di usare il World Wide Web.

Da programmatore, mi resi conto che se potevo usare Telnet per scaricare una pagina web, potevo anche scrivere dei programmi ad hoc che facessero la stessa cosa. Volendo, avrei potuto scrivere un mio browser personale, o realizzare agenti automatici (web robot, spider, e screen scraper) per superare le limitazioni di un browser.


I limiti dei browser

I principali limiti dei browser sono conseguenza del fatto che si tratta di strumenti manuali. Un browser è in grado soltanto di scaricare e visualizzare siti web: tocca a voi poi decidere se il contenuto della pagina è rilevante, se contiene informazioni già viste altrove o se è necessario seguire un collegamento a una diversa pagina web. La cosa peggiore è che un browser non è in grado di pensare. Non è capace di avvisare l'utente quando accade un evento importante, e certamente non è in grado di prevedere le azioni dell'utente, per esempio compilando automaticamente i moduli online, facendo acquisti o scaricando file. Per svolgere questo tipo di compiti, sono necessari gli automatismi e l'intelligenza di un webbot, o web robot: programmi (o "agenti", nel senso di sistemi che compiono delle azioni facendo le veci di una persona) sviluppati appositamente per navigare su Internet e assolvere in maniera "intelligente" e automatica a determinati compiti.


Cosa potete aspettarvi da questo libro

Questo libro evidenzia le limitazioni di un normale browser e indaga su come sia possibile utilizzare dei webbot per superare queste limitazioni. Il lettore imparerà a progettare e scrivere web robot per mezzo di semplici script e progetti esemplificativi. Troverà inoltre risposte a domande più rilevanti come:

Dove trovare idee per progettare un webbot?

Come ci si può divertire con i webbot senza finire nei guai?

possibile scrivere dei web robot robusti che lavorino senza farsi riconoscere?

Quali sono i trucchi per scrivere webbot robusti e fault-tolerant che continuano a funzionare anche quando cambia il contenuto dei siti Internet?


Imparare dai miei errori

Per quasi dieci anni ho scritto webbot, spider e screen scraper di ogni tipo, e in tutto questo tempo ho commesso molti degli errori che si potrebbero compiere. Poiché un web robot è capace di avanzare richieste poco convenzionali sui siti web, molti amministratori di sistema possono scambiare le richieste di un webbot per tentativi di intrusione non autorizzata. Fortunatamente, nessuno dei miei errori mi ha mai portato davanti a un giudice, ma alcuni di essi hanno causato telefonate intimidatorie, e-mail di avvertimento e situazioni poco piacevoli. Fortunatamente, posso dire di avere imparato dai miei errori, ed è passato parecchio tempo dall'ultima volta che mi sono trovato al cospetto di un amministratore di sistema infuriato. Potrete quindi risparmiarvi diversi inconvenienti leggendo le mie storie e imparando dai miei errori.


Impadronirsi delle tecniche

Imparererete la tecnologia necessaria a scrivere un vario assortimento di webbot. In particolare acquisirete le competenze tecniche per:

scaricare sistematicamente il contenuto di un sito web;

decodificare siti web cifrati;

sbloccare l'accesso a pagine web che richiedono un'autenticazione;

gestire i cookie;

effettuare il parsing dei dati;

scrivere dei web spider;

gestire le enormi quantità di dati generate dai webbot.


Sfruttare script esistenti

Questo libro usa diverse librerie di codice che semplificano la realizzazione di webbot, spider e screen scraper. Le funzioni di queste librerie gettano le basi per la maggior parte degli script esemplificativi usati nel libro. Usando queste librerie risparmierete tempo perché sono in grado di svolgere il lavoro sottostante, lasciando a voi il compito di pianificare solo le parti di alto livello. Le librerie sono disponibili per il download sul sito web del libro.


Il sito web

Il sito web del libro (http://www.schrenk.com/nostarch/webbots) è, in sé, una fonte di risorse utili.

Nei limiti del possibile, infatti, i progetti di esempio del libro usano le pagine del sito stesso come target, ovvero come risorsa a cui connettersi e su cui compiere delle azioni. Questi target costituiscono un contesto "consistente" (immutabile) per consentirvi di sviluppare le vostre competenze. importante avere a disposizione un ambiente controllato perché, nonostante tutti gli sforzi, esiste pur sempre la possibilità che un webbot smetta di funzionare correttamente al cambiare del contenuto del sito target. Avere la certezza che il sito target non cambierà nei contenuti rende il debug un po' più semplice.

Il sito contiene anche dei link ad altri siti correlati, articoli tecnici, recensioni di libri sull'argomento, e un'area con cui si può comunicare con altri sviluppatori di web robot (vedi Figura 2). Sul sito sono anche reperibili le librerie di codice usate nel libro


NOTA Una versione, localizzata in italiano, del codice utilizzato in questo volume è disponibile presso l'indirizzo: http://www.apogeonline.com/libri/88-503-2658-0/scheda. La versione ufficiale degli script presi in esame rimane comunque quella disponibile sul sito dell'autore: http://www.schrenk.com/nostarch/webbots.


Il codice

La maggior parte degli script presentati in questo libro sono realizzati in PHP puro e semplice. Alcuni script, tuttavia, contengono una mistura di PHP e HTML, a volte nella stessa riga. In questi casi, l'uso del grassetto permette di distinguere gli script PHP dal codice HTML, come mostrato nel Listato 1.

| << |  <  |  >  | >> |

Pagina 41

Capitolo 5

Automatizzare l'invio di form


Nel Capitolo 3 avete appreso come scaricare file da Internet. In questo capitolo imparerete come compilare i form e come inviare informazioni ai siti web. Se un webbot riesce a scambiare informazioni con un sito web, allora vuol dire che può agire al posto vostro. I webbot interattivi possono:

trasferire fondi tra i vostri conti bancari online quando il saldo di uno dei conti scende al di sotto di un certo limite;

acquistare oggetti su aste online quando l'oggetto e il suo prezzo soddisfano dei criteri prestabiliti;

inviare autonomamente file a siti web per la condivisione di foto;

avvisare un fornitore di ricaricare un distributore automatico quando le scorte di un prodotto sono finite.


I web robot inviano dati ai server web imitando ciò che fanno le persone, quando compilano un form HTML standard. Questo processo è detto form emulation. Il form emulation non è un compito facile, dal momento che ci sono molti modi per inviare un form. Inoltre, è fondamentale compilare form esattamente come il sito web si aspetta che siano compilati, altrimenti il server genererà un errore nei suoi file di log. Coloro che usano i browser non devono curarsi del formato dei dati che inseriscono in un form. Gli sviluppatori di webbot, invece, devono "smontare" l'interfaccia del form e studiarne il funzionamento per imparare il formato in cui il server si aspetta i dati (questo processo in generale è conosciuto come reverse engineering). Quando non si compiono errori, i dati del form inviato dal webbot appaiono esattamente come se fossero stati inviati da una persona tramite un browser.

Se fatto male, il form emulation può mettere nei guai gli sviluppatori di webbot. Ciò è vero soprattutto se state creando un'applicazione che apporta un vantaggio competitivo per un cliente e volete nascondere il fatto che state usando un webbot. Se il vostro web robot si mette nei guai possono accadere una serie di cose, che vanno dalla fuga d'informazioni (ossia rivelare che state usando un webbot), al vedervi revocata l'autorizzazione da parte del proprietario del sito web su cui stavate usando il vostro webbot.

La prima regola del form emulation è rimanere nel legale. Mostratevi in mafiera sincera, non violate l'accordo di licenza di un sito web. La seconda regola consiste nell'inviare dati di form al server esattamente nel modo in cui questo si aspetta di riceverli. Se i dati del form che inviate si discostano dal formato atteso, potreste generare errori sospetti nel log del server. In quel caso, l'amministratore del server intuirà facilmente che state usando un webbot. Anche se il vostro webbot è legittimo, i file di log del server che crea potrebbero non assomigliare all'attività di un browser. Potrebbero indicare all'amministratore del sito che siete un hacker e portare al blocco dell'indirizzo IP o alla disabilitazione del vostro account. meglio rimanere segreti e legali. Per queste ragioni, forse potrebbe interessarvi la lettura dei Capitoli 24 e 28 prima di avventurarvi da soli nel mondo dei web robot.


Reverse engineering dei form

Gli sviluppatori di webbot devono guardare i form online diversamente dalle persone che utilizzano lo stesso form in un browser. Generalmente, quando una persona usa i browser per compilare form online, per esempio per pagare una bolletta o per controllare il saldo di un conto, vede vari campi che vanno selezionati o compilati.

Gli sviluppatori webbot, al contrario, devono vedere i form HTML come interfacce o specifiche che dicono a un webbot in che modo un server si aspetta di vedere un form dopo che è stato inviato. Uno sviluppatore di webbot deve avere una visione dei form uguale a quella del server che deve riceverli. Per esempio, una persona che compila il form in Figura 5.1 riempirebbe una serie di elementi del form, come campi di testo, aree di testo, menu a tendina, pulsanti di scelta, caselle di controllo o elementi nascosti, che sono identificati da etichette di testo.

Mentre una persona associa le descrizioni mostrate in Figura 5.1 con gli elementi del form, chi scrive webbot deve sapere che le descrizioni e i tipi degli elementi del form (testo, menu, pulsanti ecc.) sono "immateriali". Tutto ciò che il form deve fare è spedire le coppie nome/dato corrette che rappresentano questi campi alla pagina del server appropriata, con il protocollo previsto. Tutto questo non è affatto complicato come potrebbe sembrare, ma prima di procedere oltre, è importante comprendere le varie parti che compongono un form HTML.

| << |  <  |  >  | >> |

Pagina 171

Parte III

Considerazioni tecniche avanzate


I capitoli di questa sezione esplorano gli aspetti tecnici più raffinati dello sviluppo di webbot e spider. Nei primi due capitoli verranno esposte delle tecniche che si imparano durante lo sviluppo di webbot e spider molto specializzati. Verranno descritti anche dei metodi per sfruttare PHP/CURL per creare webbot che gestiscano autenticazione, crittografia e cookie.


Capitolo 18: Spider

Il capitolo inzia con un'analisi di spider semplici in grado di trovare e seguire link su specifiche pagine web. Il discorso si estende poi alle tecniche per lo sviluppo di spider avanzati che vagano autonomamente su Internet, cercando informazioni specifiche e lasciando dei payload, ovvero eseguendo delle operazioni predefinite quando trovano i dati desiderati.


Capitolo 19: Webbot che acquistano per procura

In questo capitolo, si analizzerà la teoria di progettazione per scrivere sniper, ovvero webbot in grado di comprare oggetti automaticamente. Gli sniper vengono usati principalmente sui siti di aste online, "attaccando" quando vengono soddisfatti una serie di criteri specifici.


Capitolo 20: Webbot e crittografia

Per i webbot che usano PHP/CURL i siti web criptati non sono un problema. Qui si vedrà come funzionano i certificati di crittografia online e come PHP/CURL facilita la gestione della crittografia.


Capitolo 21: Autenticazione

In questo capitolo dedicato all'accesso ai siti autenticati (ovvero protetti da password), verranno analizzati i vari metodi utilizzati per proteggere i siti web da utenti non autorizzati. Si apprenderà anche come scrivere un webbot che possa accedere automaticamente a questi siti.


Capitolo 22: Gestione automatica dei cookie

La gestione avanzata dei cookie implica la gestione delle date di scadenza dei cookie e diversi set di cookie per diversi utenti. Si analizzeranno anche le possibilità (e le impossibilità) di PHP/CURL di vincere queste sfide.


Capitolo 23: Pianificazione di webbot e spider

Nell'ultimo capitolo di questa sezione, si analizzeranno i metodi per lanciare o eseguire periodicamente un webbot. Queste tecniche permetteranno al webbot di essere eseguito autonomamente simulando l'attività umana.

| << |  <  |  >  | >> |

Pagina 173

Capitolo 18

Spider


Gli spider, conosciuti anche come web spider, crawler, e web walker, sono web robot specializzati che, diversamente dai webbot tradizionali che hanno target ben definiti, scaricano più pagine web da più siti. Quando uno spider vaga per Internet è difficile prevedere dove andrà o cosa troverà, poiché segue i link trovati nelle pagine scaricate in precedenza. L'imprevedibilità rende gli spider divertenti da scrivere perché agiscono come se avessero vita propria.

Gli spider più famosi sono quelli usati dai più importanti motori di ricerca (Google, Yahoo! e MSN) per scoprire i contenuti online. Nonostante spider per molti sia sinonimo di motore di ricerca, il potenziale degli spider è molto più grande. possibile scrivere uno spider che faccia tutto quello che può fare un qualsiasi webbot, con il vantaggio di avere come target l'intera rete Internet. Questo crea una nicchia per gli sviluppatori che progettano spider specializzati per fare delle operazioni molto specifiche.

Ecco alcune idee per potenziali applicazioni spider.

Trovare copie originali in vendita dei fumetti di Spiderman del 1963. Progettare uno spider che invii un'e-mail con i link ai nuovi esemplari trovati o alle riduzioni di prezzo.

Generare periodicamente un archivio dei siti web dei concorrenti.

Invitare tutti i membri di MySpace che vivono a Roma a essere vostri amici.

ATTENZIONE Questo esempio viene riportato qui solo per mostrare le potenzialità di uno spider. Siete pregati di non farlo. Agent automatizzati come questi violano i termini d'uso di MySpace. Sviluppate i webbot in maniera responsabile.

Inviare un messaggio di testo quando lo spider trova offerte di lavoro per un fotografo di moda che parla portoghese e vive a Miami.

Mantenere una versione aggiornata del giornale locale sul palmare.

Verificare che tutti i link di un sito web indirizzino verso pagine attive.

Eseguire un'analisi statistica dell'uso dei nomi su Internet.

Cercare su Internet musicisti che hanno inciso nuove versioni di una canzone particolare.

Acquistare una Bibbia da collezione quando lo spider ne trova una il cui prezzo è sensibilmente inferiore a quello proposto su Amazon.com.

Questa lista potrebbe andare avanti, ma quanto elencato fin qui sembra sufficiente per avere un'idea delle potenzialità di uno spider. Per un'azienda, uno spider ben progettato è come avere personale in più, che giustifica ampiamente il costo di sviluppo.


Come funzionano gli spider

Gli spider cominciano a raccogliere i link dal seed URL (URL base), l'indirizzo della pagina web target iniziale. Lo spider usa questi link come riferimenti all'insieme successivo di pagine da processare e, mentre scarica tutte queste pagine, lo spider raccoglie altri link. La prima pagina scaricata dallo spider viene detta primo livello di penetrazione. A ogni livello di penetrazione successivo vengono scaricate altre pagine web secondo i riferimenti dei link raccolti nel livello precedente. Lo spider ripete questo processo finché raggiunge il livello massimo di penetrazione. La Figura 18.1 mostra un tipico processo spider.


Un esempio di spider

Questo spider di esempio riutilizzerà il "raccoglitore" di immagini (descritto nel Capitolo 8) che scarica le immagini da una pagina web. Il raccoglitore di immagini è in questo caso il payload dello spider, ovvero l'operazione che lo spider eseguirà su tutte le pagine web visitate. Questo spider compie un'operazione molto utile, ma qui il suo scopo principale è dimostrare il funzionamento di uno spider, e per questo motivo la progettazione ha subìto dei compromessi che influiscono sulla fruibilità dello spider su operazioni più complesse. Dopo aver analizzato questo esempio di spider, si daranno delle indicazioni per rendere uno spider scalabile, cioè adatto anche ad applicazioni più complesse.

I Listati 18.1 e 18.2 sono gli script principali dello spider di esempio. Inizialmente lo spider si limita a raccogliere i link. Dal momento che il payload rende le cose più complesse, verrà aggiunto solo dopo aver compreso il funzionamento dello spider base.

| << |  <  |