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

Posted

技术标签:

【中文标题】如何随机获取最新浏览器版本的用户代理? [复制]【英文标题】:How to randomly get the user agent with the latest browser version? [duplicate] 【发布时间】:2019-05-28 16:58:04 【问题描述】:

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

from fake_useragent import UserAgent

ua = UserAgent()
user_agent = ua.random

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

【问题讨论】:

可以直接编辑缓存文件 是否可以通过从ua.data['browsers'] 的列表中删除特定的用户代理来删除它们? 标记的重复是错误的,因为它是一个不同的问题。 【参考方案1】:

您可以执行以下操作:

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])

脚本的输出是:

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

请注意grp函数是公然从this answer盗取的

如果您只是在寻找一个浏览器,就像您问的那样,这将在尊重project's readme 中列出的概率的同时随机选择

browser = random.choice(ua.data_randomize)
print(sorted(ua.data_browsers[browser], key=lambda a: grp(browsers[browser], a))[-1])

【讨论】:

此方法仅生成 5 个用户代理。是否有可能产生更多? 你可以将我帖子的最后两行包装在一个函数中并多次调用。 我问的是独特的用户代理。您的脚本将始终生成您在上面发布的 5 个唯一用户代理之一,并且您使用它调用函数的次数无关紧要。 您问“有没有办法只使用最新的浏览器版本生成用户代理?”。当然,这会导致每个相应浏览器的最新浏览器版本。我希望这能说明为什么多个浏览器版本不可能是最新版本,因为只有一个版本可以是最新版本。如果你想知道一些不同的东西,也许你应该改写你的问题。 我认为应该更多。例如,您可以在 windows、mac 和 linux 上运行 chrome、safari 和 firefox,并且至少获得 9 个用户代理。但看起来 fake_useragent 模块的用户代理数量有限,而且其中大多数都有过时的浏览器版本。

以上是关于如何随机获取最新浏览器版本的用户代理? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 package.json 中使用 * 而不是版本号时如何始终获取最新版本? [复制]

怎样设置代理服务器

获取浏览器用户代理(user-agent)

如何开通国际代理服务器

获取和上传项目最新版本的程序? [复制]

如何在 PHP 中获取用户代理