Alternative all'utilizzo dei cookie?

1

Whate sono alternative all'utilizzo di cookie / archiviazione lato client per un sito basato su PHP / MySQL su Apache.

Scenario / Requisiti:

  • Voglio provare a utilizzare un codice anti-bot per impedire a scraper specifici, ecc. di accedere al sito.
    • Vorrei eseguire questo codice prima di avviare il resto del sito (prima dell'accesso al DB ecc.).
    • Non voglio eseguire costantemente lo stesso codice su ogni caricamento di pagina dopo che un visitatore ha superato il controllo iniziale.
  • Vorrei evitare l'uso dei cookie / Archiviazione lato client se possibile.

L'unica soluzione che posso attualmente pensare è scrivere file sul server in base ai visitatori IP / UA, o scrivere un elenco di essi in un singolo file.

Tuttavia questo ha la limitazione di più utenti attraverso un proxy / stessa connessione, ecc ...

Quindi, qualche idea / suggerimento?

O sto semplicemente superando il problema?

    
posta theclueless1 03.04.2012 - 12:58
fonte

3 risposte

3

In generale, per tenere traccia degli utenti e, ad esempio, per sapere quale è connesso, vengono utilizzate le sessioni. Ma le sessioni significano ID di sessione memorizzati nei cookie¹; è solo che se hai bisogno di ricordare le voci N per un utente, c'è solo un cookie coinvolto, non N .

Nel tuo caso particolare, invece, tieni alla protezione del tuo sito web da usi illegittimi (ed evita controlli ripetitivi). Significa che le sessioni non sono appropriate: perché uno scrapper ti manderebbe mai un cookie di sessione? ² Invece:

  1. Rileva l'indirizzo IP della richiesta prima di iniziare l'elaborazione,

  2. Se non si dispone di informazioni sull'indirizzo IP:

    • Rileva se è uno scrapper (come fai attualmente),

    • Salva il risultato nella cache (o nel database, o entrambi),

  3. Carica il risultato dalla cache.

  4. Rispondere in base al risultato. Se si tratta di un scrapper, invia una pagina "per favore smetti di rottamare"; se si tratta di un utente legittimo, elaborare la pagina e inviare la risposta ordinaria.

¹ PHP è anche in grado di passare l'ID di sessione negli URI. È brutto e deve essere usato solo quando non puoi fare altro.

² Ricorda che gli utenti legittimi possono disabilitare i loro cookie per qualche motivo. Il fatto che un cliente non ti invii i cookie non significa automaticamente che si tratta di un processo automatico.

    
risposta data 03.04.2012 - 13:41
fonte
1

Sembra che tu voglia usare Sessioni. Prova questo tutorial per ulteriori informazioni se non hai già familiarità con le sessioni: link

    
risposta data 03.04.2012 - 13:02
fonte
0

In un ambiente senza stato devi mantenere il valore da qualche parte; database, cookie, anche un file di testo su disco. Alcuni modi di persistere sono migliori di altri.

Sembra che tu sia più preoccupato per l'impatto sulle prestazioni del recupero del valore persistente. Prenderò una soluzione e registrerò quanto tempo impiega quella sezione di codice per caricare la pagina per verificare se la soluzione è accettabile. È possibile perfezionare ulteriormente i test per verificare la quantità di IO della rete / disco utilizzata per recuperare il valore persistente.

Potresti considerare di affrontare il problema in modo diverso. È possibile aggiungere un elemento di autenticazione utente con captcha per ridurre l'accesso al sito automatizzato se i requisiti dei siti lo consentono.

Hai considerato come affrontare se gli elementi del tuo sito come le immagini memorizzate su disco sono accessibili direttamente e ignorare il controllo del codice?

    
risposta data 03.04.2012 - 18:16
fonte

Leggi altre domande sui tag