rilevamento dell'apertura del sito Web in una nuova scheda / finestra?

1

Quindi, come parte del mio progetto per l'ultimo anno, sto scrivendo un web crawler in Java per raccogliere i dati del sito web che poi elaborerò. Uno degli attributi che devo raccogliere è "numero di popup". So che un blocco popup può visualizzare il numero di popup bloccati su un determinato sito Web e queste informazioni sarebbero sufficienti.

In alternativa, posso definire i popup come finestre di avviso di Avvisi e altri siti Web aperti in una nuova scheda o finestra e raccogliere manualmente un conteggio.

Quale metodo sarebbe più semplice e come potrei ottenerlo?

    
posta Sophie Brown 25.10.2016 - 21:24
fonte

1 risposta

2

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.

risposta data 25.10.2016 - 21:36
fonte

Leggi altre domande sui tag