如何随机获取最新浏览器版本的用户代理?

Myk*_*tko 5 python selenium web-scraping python-requests selenium-webdriver

fake_useragent 包可以随机生成用户代理:

from fake_useragent import UserAgent

ua = UserAgent()
user_agent = ua.random
Run Code Online (Sandbox Code Playgroud)

有时生成的用户代理具有过时的浏览器版本,一些网站不接受它们。有没有办法只使用最新的浏览器版本生成用户代理?

fel*_*iks 4

您可以执行以下操作:

from fake_useragent import UserAgent
import random
import re

def grp(pat, txt):
    r = re.search(pat, txt)
    return r.group(0) if r else '&'

ua = UserAgent()
browsers = {
    'chrome': r'Chrome/[^ ]+',
    'safari': r'AppleWebKit/[^ ]+',
    'opera': r'Opera\s.+$',
    'firefox': r'Firefox/.+$',
    'internetexplorer': r'Trident/[^;]+',
}

for k, v in browsers.items():
    print(sorted(ua.data_browsers[k], key=lambda a: grp(v, a))[-1])
Run Code Online (Sandbox Code Playgroud)

脚本的输出是:

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A
Opera/9.80 (Windows NT 6.1; Opera Tablet/15165; U; en) Presto/2.8.149 Version/11.1
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1
Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0;  rv:11.0) like Gecko
Run Code Online (Sandbox Code Playgroud)

请注意,该功能是从这个答案grp中公然窃取的

如果您只是寻找一个浏览器,就像您所问的那样,这将随机选择,同时尊重项目自述文件中列出的概率

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A
Opera/9.80 (Windows NT 6.1; Opera Tablet/15165; U; en) Presto/2.8.149 Version/11.1
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1
Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0;  rv:11.0) like Gecko
Run Code Online (Sandbox Code Playgroud)