2012-09-24 9 views
7

Eventuali duplicati:
What is the iOS 6 user agent string?Come rilevare iOS 6 e tutte le versioni secondarie da user-agent?

ha anybode idee per fare questo con una semplice espressione regolare o qualcosa del genere? Sarebbe bello distinguere tra iphone e ipad pure.

Qualsiasi aiuto nella costruzione di alcune espressioni regolari è apprezzato :)

EDIT: User Agent Strings: What is the iOS 6 user agent string? Questa domanda è diversa dalla possibile duplicato dato che volevo aiuto nella costruzione di un'espressione regolare sulla base delle informazioni che già conosco (che può essere trovato nella possibile duplicato)

+0

Stai cercando un agente utente iOS 6 arbitrario o solo Safari? – BoltClock

+0

Idealmente tutti i possibili programmi utente, ma poiché Safari è il più comune, penso che possa essere un punto di partenza :) – dasheddot

+2

Giusto per sottolineare, i programmi utente sono facilmente falsificabili. – Arran

risposta

26

CHANGELOG

20/01/2017

  • UA stringhe aggiornamento: 141 matching, 0 parzialmente corrispondenza e 797 linee validi

  • "Mobile Safari 1.1.3 (iPhone U; CPU come Mac OS X; it)" è considerato valido anche se si parla iPhone. In realtà un punto e virgola mancante dopo il termine iPhone che è sospetto.

  • Safari 8+ non compare ancora sul UserAgentString.com

prerequisiti

  • Il seguente espressione regolare è generico.
  • sarà MATC h Stringhe di user agent di Safari (SUAS) in esecuzione su un dispositivo mobile (vedere l'elenco dei dispositivi supportati di seguito).
  • Il regex è basato su SUAS noto da UserAgentString.com a partire da 20/01/2017.

REGEX

^(?:(?:(?:Mozilla/\d\.\d\s*\()+|Mobile\s*Safari\s*\d+(?:\.\d+)+\s*)(?:iPhone(?:\s+Simulator)?|iPad|iPod);\s*(?:U;\s*)?(?:[a-z]+(?:-[a-z]+)?;\s*)?CPU\s*(?:iPhone\s*)?(?:OS\s*\d+_\d+(?:_\d+)?\s*)?(?:like|comme)\s*Mac\s*O?S?\s*X(?:;\s*[a-z]+(?:-[a-z]+)?)?\)\s*)?(?:AppleWebKit/\d+(?:\.\d+(?:\.\d+)?|\s*\+)?\s*)?(?:\(KHTML,\s*(?:like|comme)\s*Gecko\s*\)\s*)?(?:(?:Version|CriOS)/\d+(?:\.\d+)+\s*)?(?:Mobile/\w+\s*)?(?:Safari/\d+(?:\.\d+)*.*)?$ 

DISPOSITIVI SUPPORTATI ELENCO

  • iPhone
  • iPhone Simulator
  • iPad
  • iPod

SPIEGAZIONE/PERSONALIZZAZIONE

linee precedute da un C può essere personalizzato.

1. ^(?:(?:(?:Mozilla/\d\.\d\s*\()+|Mobile\s*Safari\s*\d+(?:\.\d+)+\s*) 
C 2.  (?:iPhone(?:\s+Simulator)?|iPad|iPod);\s* 
    3.  (?:U;\s*)? 
    4.  (?:[a-z]+(?:-[a-z]+)?;\s*)? 
    5.  CPU\s* 
    6.   (?:iPhone\s*)? 
C 7.   (?:OS\s*\d+_\d+(?:_\d+)?\s*)? 
C 8.   (?:like|comme)\s*Mac\s*O?S?\s*X 
    9.  (?:;\s*[a-z]+(?:-[a-z]+)?)? 
    10. \)\s*)? 
    11. (?:AppleWebKit/\d+(?:\.\d+(?:\.\d+)?|\s*\+)?\s*)? 
C 12. (?:\(KHTML,\s*(?:like|comme)\s*Gecko\s*\)\s*)? 
C 13. (?:(?:Version|CriOS)/\d+(?:\.\d+)+\s*)? 
    14. (?:Mobile/\w+\s*)? 
    15. (?:Safari/\d+(?:\.\d+)*.*)?$ 

stringhe linea 1. UA può differire in modo tale linea viene introdotto per accettare stringhe UA per quanto possibile.
riga 2. È possibile specificare qui l'elenco separato da pipe dei dispositivi accettati.
(...)
riga 7. La versione è indicata qui. Cambia questa linea se vuoi una versione speciale. Non dimenticare di aggiornare anche la riga . Ad esempio, la corrispondenza iOS 5.x.y utilizza (?:OS\s*5_\d+_\d+\s*)?.
riga 8. Alcune stringhe di interprete utente sono tradotte. La parola like può essere tradotta in una lingua straniera. Il regexp ora supporta English e French. Adatta questa linea se incontri altre lingue. Non dimenticare di aggiornare anche la riga .
(...)
linea 12. Vedi linea 8.
linea 13. Vedi linea 7. Ad esempio, corrispondenti IOS 5.x.y uso (?:Version/5\.\d+\.\d+)?\s*)?.

+0

Davvero bello !!Grazie mille per questa risposta di alta qualità sulla mia questione non-così-alta qualità;) upvoted e contrassegnato come soluzione. Grazie! – dasheddot

+0

Siete i benvenuti! – Stephan

+3

http://regexr.com?32el3 –