最近我开始定期使用 Scrapy 来分析需要最新浏览器(用户代理)才能显示其内容的网站。 现在,这似乎是一个老问题,但最新的问题是相当开放的。为什么?
没有简单的 API 或包来生成/下载最新版本的用户代理(在任何操作系统/平台中)。
许多软件包尝试解决此问题:
最后有这个网站:www.whatismybrowser.com,它非常有帮助,但不能轻易自动化......
有什么线索可以解决这个问题吗?
一个旧答案,但我实际上也在寻找这个功能。
您的第二个选项latest-user-agents可以工作,因为它从同一作者的每日更新源获取JSON文件。
README.md 包含旧用户代理的原因是存储库未更新,所以这只是一个示例。我今天尝试了它,它有我能看到的所有最新的用户代理。
有@jnrbsn的提要https://jnrbsn.github.io/user-agents/user-agents.json(@Matteus也推荐)。
这个项目是一个基于 cron 的 GitHub 托管抓取工具,从 Whatismybrowser.com 获取最新的用户代理字符串并将其转储到 json 文件中
包括 Firefox、Chrome、Edge 和 Safari 与 Linux、MacOS 和 Windows 操作系统
的用户代理字符串排列🔔 请注意,使用此提要可能会让您面临法律风险,因为 Whatismybrowser.com 通过 API 订阅提供类似的商业产品https://explore.whatismybrowser.com/useragents/explore/
就我个人而言,对于我的一个非营利实验项目,我需要这样的东西,我决定使用@jnrbsn 的提要。我需要将 Python 脚本中的用户代理字符串保持为最新的 Windows 版 Chrome。
分享我编写的简短的 Python 函数来为我提供这个功能:
import requests
def get_latest_user_agent(operating_system='windows', browser='chrome'):
url = f'https://jnrbsn.github.io/user-agents/user-agents.json'
r = requests.get(url)
r.raise_for_status()
user_agents = r.json()
for user_agent in user_agents:
if operating_system.lower() in user_agent.lower() and browser.lower() in user_agent.lower():
return user_agent
return None
print(get_latest_user_agent(operating_system='windows', browser='chrome'))
print(get_latest_user_agent(operating_system='linux', browser='chrome'))
print(get_latest_user_agent(operating_system='mac', browser='chrome'))
输出:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36