Python100个库分享第15个—user-agents(浏览器的用户代理(user-agents)的解析器)

本文介绍了如何使用Python库来生成随机用户代理字符串,解析用户代理以获取浏览器信息,以及如何根据用户代理判断访问设备。通过案例展示了如何在办公自动化中使用这些技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

专栏导读

  • 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手

  • 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注

  • 👍 该系列文章专栏:请点击——>Python办公自动化专栏求订阅

  • 🕷 此外还有爬虫专栏:请点击——>Python爬虫基础专栏求订阅

  • 📕 此外还有python基础专栏:请点击——>Python基础学习专栏求订阅

  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏

  • ❤️ 欢迎各位佬关注! ❤️

库的介绍

  • 是一个 Python 库,用于生成各种浏览器的用户代理(User-Agent)字符串。用户代理字符串是浏览器或其他客户端发送给服务器的信息,用于标识客户端的类型、版本、操作系统等信息。在网页抓取、爬虫、自动化测试或模拟不同浏览器环境时,可能需要使用不同的用户代理字符串。

库的安装

pip install user-agents -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install fake-useragent -i https://pypi.tuna.tsinghua.edu.cn/simple/

案例 1:生成随机的用户代理字符串

from fake_useragent import UserAgent

ua = UserAgent()

print(ua.ie)
print(ua.msie)
print(ua['Internet Explorer'])
print(ua.opera)
print(ua.chrome)
print(ua.google)
print(ua['google chrome'])
print(ua.firefox)
print(ua.ff)
print(ua.safari)
print(ua.random)
  • 输出

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Mobile Safari/537.36
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Mobile Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0 Config/91.2.2121.13
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0
Mozilla/5.0 (iPhone; CPU iPhone OS 17_0_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0.3 Mobile/15E148 Safari/604.1 RDDocuments/8.7.2.978
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0 GLS/100.10.9850.99

案例 2:解析用户代理字符串

from user_agents import parse

# 假设我们有一个用户代理字符串
user_agent_string = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"

# 解析这个字符串
user_agent = parse(user_agent_string)

# 输出解析后的信息
print('浏览器名称',user_agent.browser)  # 浏览器名称
print('浏览器版本',user_agent.browser.version)  # 浏览器版本
print('操作系统名称',user_agent.os)  # 操作系统名称
print('操作系统版本',user_agent.os.version)  # 操作系统版本
print('设备类型',user_agent.device)  # 设备类型(例如:desktop, mobile 等)
  • 输出

浏览器名称 Browser(family='Chrome', version=(58, 0, 3029), version_string='58.0.3029')
浏览器版本 (58, 0, 3029)
操作系统名称 OperatingSystem(family='Windows', version=(10,), version_string='10')
操作系统版本 (10,)
设备类型 Device(family='Other', brand=None, model=None)

案例 3:判断访问设备

  • is_mobile: 是否手机 (iPhone、Android、Blackberry、Windows Phone等)

  • is_tablet: 是否平板 (iPad、Kindle、Nexus等)

  • is_pc: 是否传统桌面操作系统 (Windows、OS X、Linux)

  • is_touch_capable: 是否有触摸功能

  • is_bot: 是否搜索引擎爬虫

from user_agents import parse

# 无触摸功能的黑莓设备
ua_string = 'BlackBerry9700/5.0.0.862 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/331 UNTRUSTED/1.0 3gpp-gba'
user_agent = parse(ua_string)
print('是否是手机',user_agent.is_mobile)  # True
print('是否平板',user_agent.is_tablet)  # False
print('是否有触摸功能',user_agent.is_touch_capable)  # False
print('是否传统桌面操作系统',user_agent.is_pc)  # False
print('是否搜索引擎爬虫',user_agent.is_bot)  # False
print(str(user_agent))  # "BlackBerry 9700 / BlackBerry OS 5 / BlackBerry 9700"
print('='*60)
# 三星Galaxy S3
ua_string = 'Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'
user_agent = parse(ua_string)
print('是否是手机',user_agent.is_mobile)  # True
print('是否平板',user_agent.is_tablet)  # False
print('是否有触摸功能',user_agent.is_touch_capable)  # False
print('是否传统桌面操作系统',user_agent.is_pc)  # False
print('是否搜索引擎爬虫',user_agent.is_bot)  # False
print(str(user_agent))  # "Samsung GT-I9300 / Android 4.0.4 / Android 4.0.4"
print('='*60)
# iPad
ua_string = 'Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10'
user_agent = parse(ua_string)
print('是否是手机',user_agent.is_mobile)  # True
print('是否平板',user_agent.is_tablet)  # False
print('是否有触摸功能',user_agent.is_touch_capable)  # False
print('是否传统桌面操作系统',user_agent.is_pc)  # False
print('是否搜索引擎爬虫',user_agent.is_bot)  # False
print(str(user_agent))  # "iPad / iOS 3.2 / Mobile Safari 4.0.4"
print('='*60)
# Kindle
ua_string = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true'
user_agent = parse(ua_string)
print('是否是手机',user_agent.is_mobile)  # True
print('是否平板',user_agent.is_tablet)  # False
print('是否有触摸功能',user_agent.is_touch_capable)  # False
print('是否传统桌面操作系统',user_agent.is_pc)  # False
print('是否搜索引擎爬虫',user_agent.is_bot)  # False
print(str(user_agent))  # "Kindle / Android / Amazon Silk 1.1.0-80"
print('='*60)
# 带触摸功能的Windows 8设备
ua_string = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)'
user_agent = parse(ua_string)
print('是否是手机',user_agent.is_mobile)  # True
print('是否平板',user_agent.is_tablet)  # False
print('是否有触摸功能',user_agent.is_touch_capable)  # False
print('是否传统桌面操作系统',user_agent.is_pc)  # False
print('是否搜索引擎爬虫',user_agent.is_bot)  # False
print(str(user_agent))  # "PC / Windows 8 / IE 10"

  • 输出

是否是手机 True
是否平板 False
是否有触摸功能 False
是否传统桌面操作系统 False
是否搜索引擎爬虫 False
BlackBerry 9700 / BlackBerry OS 5.0.0 / BlackBerry 9700
============================================================
是否是手机 True
是否平板 False
是否有触摸功能 True
是否传统桌面操作系统 False
是否搜索引擎爬虫 False
Samsung GT-I9300 / Android 4.0.4 / Android 4.0.4
============================================================
是否是手机 False
是否平板 True
是否有触摸功能 True
是否传统桌面操作系统 False
是否搜索引擎爬虫 False
iPad / iOS 3.2 / Mobile Safari 4.0.4
============================================================
是否是手机 False
是否平板 True
是否有触摸功能 True
是否传统桌面操作系统 False
是否搜索引擎爬虫 False
Kindle / Android / Amazon Silk 1.1.0-80
============================================================
是否是手机 False
是否平板 False
是否有触摸功能 True
是否传统桌面操作系统 True
是否搜索引擎爬虫 False
PC / Windows 8 / IE 10.0

封装使用

  • 判断手机、平板电脑、PC

import user_agents


def ismobile(ua_string):
    '''是否手机

    :param ua_string: UserAgent字符串
    :return: True or False

    >>> ismobile('BlackBerry9700/5.0.0.862 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/331 UNTRUSTED/1.0 3gpp-gba')
    True
    >>> ismobile('Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)')
    False
    '''
    return user_agents.parse(ua_string).is_mobile


def istablet(ua_string):
    '''是否平板

    :param ua_string: UserAgent字符串
    :return: True or False

    >>> istablet('Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10')
    True
    >>> istablet('Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)')
    False
    '''
    return user_agents.parse(ua_string).is_tablet


def ispc(ua_string):
    '''是否PC

    :param ua_string: UserAgent字符串
    :return: True or False

    >>> ispc('Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)')
    True
    >>> ispc('BlackBerry9700/5.0.0.862 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/331 UNTRUSTED/1.0 3gpp-gba')
    False
    '''
    return user_agents.parse(ua_string).is_pc

参考:

Python UserAgent解析库——user_agents,判断手机等访问设备

总结

  • 希望对初学者有帮助

  • 致力于办公自动化的小小程序员一枚

  • 希望能得到大家的【一个免费关注】!感谢

  • 求个 🤞 关注 🤞

  • 此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏

  • 求个 ❤️ 喜欢 ❤️

  • 此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏

  • 求个 👍 收藏 👍

  • 此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小庄-Python办公

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值