Esistono due tecniche per aprire il contenuto in una nuova scheda o popup: target="_blank"
e JavaScript window.open()
.
Mentre il primo è relativamente facile da rilevare per un crawler (anche se non è il compito più semplice, come ha spiegato Brian nel suo commento), il secondo richiederà di analizzare JavaScript e analizzare , intendo eseguilo in una sandbox. Data la natura dinamica di JavaScript, non puoi solo grep
per window.open\(*\)
, perché il metodo stesso può essere invocato come w.open()
dove w
è stato precedentemente assegnato a window
o a.a()
se il codice è stato minimizzato, o ... beh, si ottiene il modello.
Ancora più importante, è necessario sapere quando il popup è aperto. Una pagina può spammare l'utente con cinque popup automaticamente non appena viene aperto, o un popup può essere aperto su un evento click dell'utente, o forse è sepolto in profondità nella logica complessa, il che significa che sarà aperto solo in un caso molto specifico che accade una volta all'anno per due-tre utenti. Ciò renderà difficile impossibile determinare il numero di popup a livello di programmazione, perché:
-
Si tratta di determinare cosa dovresti includere e cosa non dovresti. Il tuo crawler dovrebbe considerare solo i popup che vengono visualizzati all'avvio della pagina? O magari a inizio pagina e su eventi click? O su un timer?
-
La ricerca di tutti i possibili percorsi di esecuzione attraverso il codice potrebbe impiegare molto tempo a non avere i server necessariamente.