GolangNote

Golang笔记

Golang 根据 UserAgent 识别浏览器、设备和平台

Permalink

在许多应用中,需要从客户端 UserAgent 字符串中检测浏览器、设备和平台。比如以下用例:

  • 希望为不同的浏览器、设备或平台呈现不同的 HTML
  • 想为抓取机器人和社交媒体网站渲染 OG 标签
  • 希望记录用于分析的浏览器、设备或平台
  • 希望当 Google 机器人抓取您的网站进行 SEO 时,您的后端行为会有所不同

browser 库刚好适合

使用示例

Go:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
b, err := browser.NewBrowser("Mozilla/5.0 (Linux; Android 10; SM-A205U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.210 Mobile Safari/537.36")
 if err != nil {
  // handle error
 }

 // browser level information
 fmt.Println(b.Name())           // Chrome
 fmt.Println(b.Version())        // 90.0.4430.210
 fmt.Println(b.ShortVersion())   // 90
 fmt.Println(b.IsBrowserKnown()) // true
 fmt.Println(b.IsChrome())       // true

 // device level information
 fmt.Println(b.Device().Name())      // Samsung SM-A205U
 fmt.Println(b.Device().IsTablet())  // false
 fmt.Println(b.Device().IsSamsung()) // true

 // platform level information
 fmt.Println(b.Platform().Name())         // Android
 fmt.Println(b.Platform().Version())      // 10
 fmt.Println(b.Platform().IsAndroidApp()) // false

// bot level information
fmt.Println(b.Bot().Name())  // ""
fmt.Println(b.Bot().IsBot()) // false

支持的浏览器

plaintext:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Nokia
Alipay
UCBrowser
BlackBerry
Brave
Opera
Otter
Instagram
Snapchat
Weibo
MicroMessenger
QQ
Electron
DuckDuckGo
GoogleSearchApp
HuaweiBrowser
Konqueror
Maxthon
MiuiBrowser
PaleMoon
Puffin
Edge
InternetExplorer
SamsungBrowser
SogouBrowser
Vivaldi
VivoBrowser
Sputnik
YaaniBrowser
Yandex
Firefox
Chrome
Safari

支持的平台

plaintext:
1
2
3
4
5
6
7
8
9
10
11
12
AdobeAir
BlackBerry
KaiOS
IOS
WatchOS
WindowsMobile
WindowsPhone
Windows
Android
Linux
FirefoxOS
ChromeOS

支持的设备

plaintext:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
BlackberryPlaybook
Iphone
Ipad
IpodTouch
KindleFire
Kindle
PlayStation3
PlayStation4
PlayStation5
PSVita
PSP
WiiU
Wii
XboxOne
Xbox360
Switch
Surface
Kindle
Samsung
TV
Android

本文网址: https://golangnote.com/topic/321.html 转摘请注明来源

Related articles

Golang 生成防识别的图片验证码

验证码 captcha 是对抗密码强力破解、垃圾信息的有效方式,一般用于用户注册、登录,当检测到频繁发帖时也会启用验证码。下面介绍用golang 生成防机器识别的图片验证码。...

Golang 把cookie 字符串解析为cookie 结构

在做爬虫时有时候会遇到需要带已登录的 cookie 请求,这个时候最简单的方法是在浏览器登录后,在开发者面板找到cookie 字符串,然后拷贝粘贴。这就面临一个问题需要把cookie 字符串解析成Go 语言 cookie 结构体。...

Golang sync.WaitGroup 的 Wait 超时处理

sync.WaitGroup 使用 `Add(1)`、`Done()`、`Wait()`组合来实现多协程等待,如果某一协程未能合理处理错误,导致无法退出,此时需要引入超时机制。下面是一种超时处理方法。...

Write a Comment to "Golang 根据 UserAgent 识别浏览器、设备和平台"

Submit Comment Login
Based on Golang + fastHTTP + sdb | go1.22.3 Processed in 0ms