2
0

Add support for brackets in parser

+ identifies facebook app user agent
This commit is contained in:
Antoine Goutagny
2023-02-17 14:56:06 +01:00
parent c3c56e24ed
commit da1d8437ab
2 changed files with 18 additions and 1 deletions
+14 -1
View File
@@ -56,6 +56,8 @@ const (
FacebookExternalHit = "facebookexternalhit"
Applebot = "Applebot"
Bingbot = "Bingbot"
FacebookApp = "Facebook App"
)
// Parse user agent string returning UserAgent struct
@@ -246,6 +248,9 @@ func Parse(userAgent string) UserAgent {
ua.Mobile = true
}
case tokens.exists("FBAN"):
ua.Name = FacebookApp
case tokens.get("HuaweiBrowser") != "":
ua.Name = "Huawei Browser"
ua.Version = tokens.get("HuaweiBrowser")
@@ -349,6 +354,7 @@ func parse(userAgent string) properties {
}
parOpen := false
braOpen := false
bua := []byte(userAgent)
for i, c := range bua {
@@ -359,13 +365,20 @@ func parse(userAgent string) properties {
addToken()
parOpen = false
case parOpen && c == 59: // ;
case (parOpen || braOpen) && c == 59: // ;
addToken()
case c == 40: // (
addToken()
parOpen = true
case c == 91: // [
addToken()
braOpen = true
case c == 93: // ]
addToken()
braOpen = false
case slash && c == 32:
addToken()
+4
View File
@@ -91,6 +91,9 @@ var testTable = [][]string{
// HeadlessChrome
{"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/98.0.4758.0 Safari/537.36", ua.HeadlessChrome, "98.0.4758.0", "desktop", ua.Linux},
//FB App
{"Mozilla/5.0 (iPhone; CPU iPhone OS 15_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/19E258 [FBAN/FBIOS;FBDV/iPhone8,2;FBMD/iPhone;FBSN/iOS;FBSV/15.4.1;FBSS/3;FBID/phone;FBLC/fr_FR;FBOP/5]", ua.FacebookApp, "FBIOS", "mobile", ua.IOS},
// other
{"Mozilla/5.0 (X11; CrOS x86_64 14150.74.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.114 Safari/537.36", ua.Chrome, "94.0.4606.114", "desktop", ua.ChromeOS},
{"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 Google (+https://developers.google.com/+/web/snippet/)", ua.Chrome, "56.0.2924.87", "bot", ua.Linux}, // Google+ fetch
@@ -108,6 +111,7 @@ var testTable = [][]string{
//GooglePlus "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 Google (+https://developers.google.com/+/web/snippet/)"
//Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Applebot/0.1; +http://www.apple.com/go/applebot)
//Mozilla/5.0 (Macintosh; Intel Mac OS Xt 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.6.0 Chrome/45.0.2454.101 Safari/537.36
}
func TestParse(t *testing.T) {