2009-05-29 13 views
45

Qual è il metodo migliore per analizzare una stringa User-Agent in Python per rilevare in modo affidabileAnalisi HTTP User-Agent stringa

  1. Browser
  2. versione del browser
  3. OS

O forse qualsiasi libreria di supporto che lo fa

+0

Più precisamente, a seconda del browser, sistemi operativi e versioni per il rilevamento delle capacità non è una buona strategia. Che problema stai cercando di risolvere? –

+1

Abbiamo un semplice modulo di segnalazione ticket per la nostra app Web. E spesso chiediamo agli utenti cos'è il broswer/OS ecc. Quindi potremmo solo rilevarlo in anticipo e chiedere all'utente di confermare. Bene, se non è così banale, scaricheremo semplicemente l'utente-agente, ma dobbiamo ancora fare domande, poiché l'utente potrebbe utilizzare un browser diverso per inviare il ticket. – Shekhar

+0

Potresti semplicemente lasciare che Python esegua il rendering del modulo e utilizzi Javascript per modificare i valori del campo di input in quelli del sistema operativo corrente e qualsiasi altra cosa desideri. – NerdyNick

risposta

66

Rispondendo alla mia domanda;)

Alla fine ho deciso di andare per suggestione # 1 vale a dire scrivere il proprio. E sono felice del risultato. Non esitate a utilizzare/modificare/inviarmi Patch ecc

E 'qui ->http://pypi.python.org/pypi/httpagentparser

+0

Questo non sembra funzionare particolarmente bene per i telefoni cellulari. In particolare, la mora non viene rilevata. (anche se hai il mio +1 per scriverlo!) –

+4

@Jason Sundram Se ti aiuti fornendo stringhe degli agenti e risultati attesi, blackberry, altri possono essere supportati. Controlla https://github.com/shon/httpagentparser/issues – Shekhar

+0

Mi interessava il confronto, ma questo è un punto giusto. Retratta. –

2

Tuttavia, se si desidera analizzare tutto questo sul lato Python, è possibile utilizzare XML/INI file forniti a http://browsers.garykeith.com/downloads.asp per eseguire ricerche sul programma utente. Questo è lo stesso file utilizzato nella funzione get_browser() di php.

10

UASparser for Python da Hicro Kee. File di dati e cache aggiornati automaticamente dal server remoto con controllo della versione.

+0

Consiglierei anche UA Parser. – Dexter

8

Werkzeug ha un parsing di user-agent incorporato.

http://werkzeug.pocoo.org/docs/0.10/utils/#module-werkzeug.useragents

+0

Interessante. Ho controllato rapidamente il codice. È davvero semplice, un bel codice essenzialmente una serie di regex da abbinare alla stringa dell'agent. Interessante sarebbe come si comporta. Un altro punto di Werkzeug è che rileva anche la lingua, mentre il vantaggio di httpagentparaser è che rileva anche la versione os. – Shekhar

+0

collegamento mancante, deve essere aggiornato – Siddharth

5

Le altre risposte a questa domanda sono piuttosto vecchio ormai. Credo che il nuovo standard nell'analisi di Browser User Agent sia il numero user agent parser di Browserscope.

anche convenientemente disponibile con gli stessi schemi esatti corrispondenti in many other languages. Un giorno potresti voler analizzare anche alcune stringhe UA in JavaScript e non devi preoccuparti di analisi incoerenti.