2012-09-24 28 views
7

thể trùng lặp:
What is the iOS 6 user agent string?Cách phát hiện iOS 6 và tất cả các phiên bản nhỏ của tác nhân người dùng?

Có anybode ý tưởng để làm điều này với một regex đơn giản hoặc một cái gì đó? Sẽ được tốt đẹp để phân biệt giữa iphone và ipad là tốt.

Bất kỳ sự giúp đỡ trong việc xây dựng một số regexes được đánh giá cao :)

EDIT: User Agent Strings: What is the iOS 6 user agent string? câu hỏi này khác với trùng lặp càng tốt vì tôi muốn giúp đỡ trong việc xây dựng một regex dựa trên thông tin mà tôi đã biết (mà có thể được tìm thấy trong các bản sao có thể)

+0

Bạn đang tìm kiếm bất kỳ đại lý người dùng iOS 6 tùy ý nào hay chỉ Safari? – BoltClock

+0

Lý tưởng nhất là tất cả các tác nhân người dùng có thể nhưng vì Safari là phổ biến nhất nên tôi nghĩ đó có thể là điểm khởi đầu :) – dasheddot

+2

Chỉ cần chỉ ra, các tác nhân người dùng có thể dễ dàng giả mạo. – Arran

Trả lời

26

CHANGELOG

20/01/2017

  • UA chuỗi update: 141 khớp, 0 phần phù hợp, và 797 dòng không hợp lệ

  • "Mobile Safari 1.1.3 (iPhone U; CPU như Mac OS X; en)" được coi là vô hiệu ngay cả khi nó đề cập đến iPhone. Trên thực tế một dấu chấm phẩy là mất tích sau khi hạn iPhone đó là đáng ngờ.

  • Safari 8 + không xuất hiện nhưng trên UserAgentString.com

điều kiện tiên quyết

  • Các regex sau là chung chung.
  • Nó sẽ MATC h Chuỗi tác nhân người dùng Safari (SUAS) chạy trên thiết bị di động (xem danh sách thiết bị được hỗ trợ bên dưới).
  • Regex dựa trên SUAS đã biết theo UserAgentString.com kể từ 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+)*.*)?$ 

HỖ TRỢ THIẾT BỊ DANH

  • iPhone
  • iPhone Simulator
  • iPad
  • iPod

GIẢI THÍCH/Customization

dòng trước bởi một C có thể được tùy chỉnh.

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+)*.*)?$ 

chuỗi dòng 1. UA có thể khác nhau vì thế dòng này được giới thiệu cho việc chấp nhận chuỗi UA càng nhiều càng tốt.
dòng 2. Bạn có thể chỉ định ở đây danh sách các thiết bị được chấp nhận được phân tách bằng đường ống.
(...)
dòng 7. Phiên bản được chỉ định tại đây. Thay đổi dòng này nếu bạn muốn có một phiên bản đặc biệt. Đừng quên cập nhật dòng 13. Ví dụ: kết hợp iOS 5.x.y sử dụng (?:OS\s*5_\d+_\d+\s*)?.
dòng 8. Một số chuỗi tác nhân người dùng được dịch. Từ like có thể được dịch sang tiếng nước ngoài. Regexp hiện hỗ trợ EnglishFrench. Thích ứng với dòng này nếu bạn gặp phải các ngôn ngữ khác. Đừng quên cập nhật dòng 12.
(...)
dòng 12. Xem dòng 8.
dòng 13. Xem dòng 7. Ví dụ, phù hợp với iOS 5.x.y sử dụng (?:Version/5\.\d+\.\d+)?\s*)?.

+0

Thực sự tuyệt vời !!Cảm ơn bạn rất nhiều vì câu trả lời chất lượng cao này về câu hỏi không có chất lượng cao của tôi;) Được bình chọn và đánh dấu là giải pháp. Cảm ơn! – dasheddot

+0

Bạn được chào đón! – Stephan

+3

http://regexr.com?32el3 –

Các vấn đề liên quan