agent
-- import "github.com/headzoo/surf/agent"
Package agent generates user agents strings for well known browsers and for custom browsers.
When submitting patches to add user agents formats, please always include "{{.Coms}}" between the opening ( and closing ) braces, even if you're sure the browser would never have additional comments.
Usage
const (
// Windows operating system.
Windows int = iota
// Linux based operating system.
Linux
// Macintosh/OS X operating system.
Macintosh
)
var (
// Name is the name of the browser.
Name = "Surf"
// Version is the browser version.
Version = "1.0"
// OSName is the operating system name.
OSName = osName()
// OSVersion is the operating system version.
OSVersion = osVersion()
// Comments are additional comments to add to a user agent string.
Comments = []string{runtime.Version()}
)
var Database = UATable{
"chrome": {
"37.0.2049.0",
Windows,
Formats{
"37": "Mozilla/5.0 ({{.OSN}} {{.OSV}}{{.Coms}}) Chrome/{{.Ver}} Safari/537.36",
"36": "Mozilla/5.0 ({{.OSN}} {{.OSV}}{{.Coms}}) Chrome/{{.Ver}} Safari/537.36",
"35": "Mozilla/5.0 ({{.OSN}} {{.OSV}}{{.Coms}}) Chrome/{{.Ver}} Safari/537.36",
"34": "Mozilla/5.0 ({{.OSN}} {{.OSV}}{{.Coms}}) Chrome/{{.Ver}} Safari/537.36",
"33": "Mozilla/5.0 ({{.OSN}} {{.OSV}}{{.Coms}}) Chrome/{{.Ver}} Safari/537.36",
"32": "Mozilla/5.0 ({{.OSN}} {{.OSV}}{{.Coms}}) Chrome/{{.Ver}} Safari/537.36",
"31": "Mozilla/5.0 ({{.OSN}} {{.OSV}}{{.Coms}}) Chrome/{{.Ver}} Safari/537.36",
"30": "Mozilla/5.0 ({{.OSN}} {{.OSV}}{{.Coms}}) Chrome/{{.Ver}} Safari/537.36",
},
},
"firefox": {
"31.0",
Windows,
Formats{
"31": "Mozilla/5.0 ({{.OSN}} {{.OSV}}{{.Coms}}; rv:31.0) Gecko/20100101 Firefox/{{.Ver}}",
"30": "Mozilla/5.0 ({{.OSN}} {{.OSV}}{{.Coms}}; rv:30.0) Gecko/20120101 Firefox/{{.Ver}}",
"29": "Mozilla/5.0 ({{.OSN}} {{.OSV}}{{.Coms}}; rv:29.0) Gecko/20120101 Firefox/{{.Ver}}",
"28": "Mozilla/5.0 ({{.OSN}} {{.OSV}}{{.Coms}}; rv:28.0) Gecko/20100101 Firefox/{{.Ver}}",
"27": "Mozilla/5.0 ({{.OSN}} {{.OSV}}{{.Coms}}; rv:27.0) Gecko/20130101 Firefox/{{.Ver}}",
"26": "Mozilla/5.0 ({{.OSN}} {{.OSV}}{{.Coms}}; rv:26.0) Gecko/20121011 Firefox/{{.Ver}}",
"25": "Mozilla/5.0 ({{.OSN}} {{.OSV}}{{.Coms}}; rv:25.0) Gecko/20100101 Firefox/{{.Ver}}",
},
},
"msie": {
"10.0",
Windows,
Formats{
"10": "Mozilla/5.0 (compatible; MSIE 10.0; {{.OSN}} {{.OSV}}{{if .Coms}}{{.Coms}}; {{end}}Trident/5.0; .NET CLR 3.5.30729)",
"9": "Mozilla/5.0 (compatible; MSIE 9.0; {{.OSN}} {{.OSV}}{{if .Coms}}{{.Coms}}; {{end}}Trident/5.0; .NET CLR 3.0.30729)",
"8": "Mozilla/5.0 (compatible; MSIE 8.0; {{.OSN}} {{.OSV}}{{if .Coms}}{{.Coms}}; {{end}}Trident/4.0; .NET CLR 3.0.04320)",
"7": "Mozilla/4.0 (compatible; MSIE 7.0; {{.OSN}} {{.OSV}}{{if .Coms}}{{.Coms}}; {{end}}.NET CLR 2.0.50727)",
},
},
"opera": {
"12.14",
Windows,
Formats{
"12": "Opera/9.80 ({{.OSN}} {{.OSV}}; U{{.Coms}}) Presto/2.9.181 Version/{{.Ver}}",
"11": "Opera/9.80 ({{.OSN}} {{.OSV}}; U{{.Coms}}) Presto/2.7.62 Version/{{.Ver}}",
"10": "Opera/9.80 ({{.OSN}} {{.OSV}}; U{{.Coms}}) Presto/2.2.15 Version/{{.Ver}}",
"9": "Opera/9.00 ({{.OSN}} {{.OSV}}; U{{.Coms}})",
},
},
"safari": {
"6.0",
Macintosh,
Formats{
"6": "Mozilla/5.0 (Macintosh; {{.OSN}} {{.OSV}}{{.Coms}}) AppleWebKit/536.26 (KHTML, like Gecko) Version/{{.Ver}} Safari/8536.25",
"5": "Mozilla/5.0 (Macintosh; {{.OSN}} {{.OSV}}{{.Coms}}) AppleWebKit/531.2+ (KHTML, like Gecko) Version/{{.Ver}} Safari/531.2+",
"4": "Mozilla/5.0 (Macintosh; {{.OSN}} {{.OSV}}{{.Coms}}) AppleWebKit/528.16 (KHTML, like Gecko) Version/{{.Ver}} Safari/528.16",
},
},
"itunes": {
"9.1.1",
Macintosh,
Formats{
"9": "iTunes/{{.Ver}}",
"8": "iTunes/{{.Ver}}",
"7": "iTunes/{{.Ver}} (Macintosh; U; PPC Mac OS X 10.4.7{{.Coms}})",
"6": "iTunes/{{.Ver}} (Macintosh; U; PPC Mac OS X 10.4.5{{.Coms}})",
},
},
"aol": {
"9.7",
Windows,
Formats{
"9": "Mozilla/5.0 (compatible; MSIE 9.0; AOL {{.Ver}}; AOLBuild 4343.19; {{.OSN}} {{.OSV}}; WOW64; Trident/5.0; FunWebProducts{{.Coms}})",
"8": "Mozilla/4.0 (compatible; MSIE 7.0; AOL {{.Ver}}; {{.OSN}} {{.OSV}}; GTB5; .NET CLR 1.1.4322; .NET CLR 2.0.50727{{.Coms}})",
"7": "Mozilla/4.0 (compatible; MSIE 7.0; AOL {{.Ver}}; {{.OSN}} {{.OSV}}; FunWebProducts{{.Coms}})",
"6": "Mozilla/4.0 (compatible; MSIE 6.0; AOL {{.Ver}}; {{.OSN}} {{.OSV}}{{.Coms}})",
},
},
"konqueror": {
"4.9",
Linux,
Formats{
"4": "Mozilla/5.0 (compatible; Konqueror/4.0; {{.OSN}}{{.Coms}}) KHTML/4.0.3 (like Gecko)",
"3": "Mozilla/5.0 (compatible; Konqueror/3.0-rc6; i686 {{.OSN}}; 20021127{{.Coms}})",
"2": "Mozilla/5.0 (compatible; Konqueror/2.1.1; {{.OSN}}{{.Coms}})",
},
},
"netscape": {
"9.1.0285",
Windows,
Formats{
"9": "Mozilla/5.0 ({{.OSN}}; U; {{.OSN}} {{.OSV}}; rv:1.9.2.4{{.Coms}}) Gecko/20070321 Netscape/{{.Ver}}",
"8": "Mozilla/5.0 ({{.OSN}}; U; {{.OSN}} {{.OSV}}; rv:1.7.5{{.Coms}}) Gecko/20050519 Netscape/{{.Ver}}",
"7": "Mozilla/5.0 ({{.OSN}}; U; {{.OSN}} {{.OSV}}; rv:1.0.1{{.Coms}}) Gecko/20020921 Netscape/{{.Ver}}",
},
},
"lynx": {
"2.8.8dev.3",
Linux,
Formats{
"2": "Lynx/{{.Ver}} libwww-FM/2.14 SSL-MM/1.4.1",
"1": "Lynx (textmode)",
},
},
"googlebot": {
"2.1",
Linux,
Formats{
"2": "Mozilla/5.0 (compatible; Googlebot/{{.Ver}}; +http://www.google.com/bot.html{{.Coms}})",
"1": "Googlebot/{{.Ver}} (+http://www.google.com/bot.html{{.Coms}})",
},
},
"bingbot": {
"2.0",
Windows,
Formats{
"2": "Mozilla/5.0 (compatible; bingbot/{{.Ver}}; +http://www.bing.com/bingbot.htm{{.Coms}})",
},
},
"yahoobot": {
"2.0",
Linux,
Formats{
"2": "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp{{.Coms}})",
},
},
"default": {
"1.0",
Linux,
Formats{
"1": "{{.Name}}/{{.Ver}} ({{.OSN}} {{.OSV}}{{.Coms}})",
},
},
}
Database is the "database" of user agents.
var DefaultOSAttributes = map[int]OSAttributes{
Windows: {"Windows NT", "6.3", []string{"x64"}},
Linux: {"Linux", "3.16.1", []string{"x64"}},
Macintosh: {"Intel Mac OS X", "10_6_8", []string{}},
}
DefaultOSAttributes stores default OS attributes.
func AOL
func AOL() string
AOL returns a user agent string for the most recent version of the AOL browser.
func BingBot
func BingBot() string
BingBot returns a user agent string for the most recent version of the BingBot crawler.
func Chrome
func Chrome() string
Chrome returns a user agent string for the most recent version of the Chrome browser.
func Create
func Create() string
Create generates and returns a complete user agent string.
func CreateVersion
func CreateVersion(browser, version string) string
CreateVersion generates and returns a complete user agent string for a specific browser version.
func Firefox
func Firefox() string
Firefox returns a user agent string for the most recent version of the Firefox browser.
func Format
func Format(bname, bver string) string
Format returns the format string for the given browser name and version.
When a format can't be found for a version, the first format string for the browser is returned. When a format can't be found for the browser the default format is returned.
func GoogleBot
func GoogleBot() string
GoogleBot returns a user agent string for the most recent version of the GoogleBot crawler.
func ITunes
func ITunes() string
ITunes returns a user agent string for the most recent version of the iTunes media player.
func Konqueror
func Konqueror() string
Konqueror returns a user agent string for the most recent version of the Konqueror browser.
func Lynx
func Lynx() string
Lynx returns a user agent string for the most recent version of the Lynx cli browser.
func MSIE
func MSIE() string
MSIE returns a user agent string for most recent version of the Microsoft Internet Explorer.
func Netscape
func Netscape() string
Netscape returns a user agent string for the most recent version of the Netscape Navigator browser.
func Opera
func Opera() string
Opera returns a user agent string for the most recent version of the Opera browser.
func Safari
func Safari() string
Safari returns a user agent string for the most recent version of the Safari browser.
func TopVersion
func TopVersion(bname string) string
TopVersion returns the most recent version for the given browser name.
func YahooBot
func YahooBot() string
YahooBot returns a user agent string for the most recent version of the YahooBot crawler.
type Formats
type Formats map[string]string
Formats is a collection of UA format strings.
type OSAttributes
type OSAttributes struct {
OSName string
OSVersion string
Comments []string
}
OSAttributes stores OS attributes.
type TemplateData
type TemplateData struct {
Name string
Ver string
OSN string
OSV string
Coms string
}
TemplateData structure for template data.
type UAData
type UAData struct {
TopVersion string
DefaultOS int
Formats Formats
}
UAData stores information on a browser user agent.
type UATable
type UATable map[string]UAData
UATable is a collection of UAData values.