为什么 UserAgent 中出现「 iPhone;U; 」的订单都是高危的?

相信大多数童靴对 UserAgent (以下简称 “UA”)都比较了解,但在开头还是简单介绍一下 UA  的基本概念,方便理解。


UserAgent 是什么?

UserAgent 又称为「用户代理」,简称 UA 。 UA 的存在,能够让服务器能够识别客户端的信息,从而针对不同客户端做出特定的行为。
比如,给浏览器语言设置为中文的用户观看中文页面;给使用移动浏览器的用户推荐 APP 下载链接等。
UA 是一串字符,其标准的格式为:浏览器标识(操作系统标识;加密等级标识;浏览器语言)渲染引擎标识版本信息。
例:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36
通过 UA ,你能对用户使用的软件硬件情况有个大致的了解。比如以上的例子就可以翻译成:
Windows 10 系统下的 64 位计算机,使用 Webkit 渲染引擎的 Chrome/Safari 浏览器。


为什么 UserAgent 中出现「 iPhone;U;」的订单都是高危的?

回答这个问题之前,需要先回答另外两个问题。


① iPhone;U 这种组合合理吗?
合理。不过仅限于 iOS4 以及之前的版本。
iOS4 以及之前的 UA :
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0_1 like Mac OS X; ja-jp) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A306 Safari/6531.22.7
iOS5 以及之后的 UA :
Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405 Safari/7534.48.3
可以发现,iOS5 开始,‘ U ’消失了。

②‘ U ’的意思?为什么 iOS5 开始就没有‘ U ’
‘ U ’是加密等级的标识,‘ U ’表示「 128AES 」强数据加密,相对于‘ I ’弱安全加密「 40AES 」和‘ N ’无安全加密。
iOS4 以及更低的版本,均是使用「 128AES 」类型进行加密。在 UA 中标示为‘ U ’ 。
而从 iOS5 开始,数据开始使用「 256AES 」类型进行加密。由于‘ U ’ 是特指「 128AES 」类型,所以 UA 中不再有‘ U ’ 。

通俗解释就是:
iPhone;U; 早期版本的iOS
iPhone;      现役版本的iOS

带「 iPhone;U;」字样跟互联网欺诈订单有什么关系?



苹果公司在 2011 年年末发布的 iPhone4s 自带 iOS5 ,所以带「 iPhone;U;」字样的设备最高的型号也只是 iPhone4( iPad 2 或者过时的iPod Touch 4 ) 。

而今 iOS 已经经历了多个版本的迭代,并且根据公开数据显示,截止 2016 年 7 月,iOS9 占 86% ,iOS8 占 11% ,余下更早版本的所有占 3% 。这里面又有多少是 iOS4 呢?
在发现了一批欺诈订单都具有这个特点之后,我们不禁想到:
2016 年在线购物的人,还会用着过时的 iOS4 系统吗?
最大的可能性,就是“某些人”用着一批被市场淘汰的设备,发挥它的“剩余价值”。在被风控业务人员发现之前,这么做,其实也不算太笨。

一个值得思考的扩展问题

问:UserAgent  能够被修改吗?
答:可以。主流浏览器有专门修改 UserAgent 的插件,并且网络上也流传着各种修改的方法。但是所有的修改,也只是在一个现有的 UA 库里选择,并不能做到真正意义上的自定义。


反爬虫

来源:www.bigsec.com


<think>好的,用户的问题是关于如何在Python的fake_useragent库中使用UserAgent()方法来生成移动设备的用户代理。首先,我需要回忆一下fake_useragent库的基本用法,以及它是否支持指定生成移动端的User-Agent。 首先,fake_useragent库的主要作用是通过UserAgent类随机生成各种浏览器的用户代理字符串。默认情况下,它可能生成桌面浏览器的User-Agent,但用户想生成移动设备的。需要确认这个库是否支持指定设备类型,比如mobile。 查阅fake_useragent的文档或者源码,发现UserAgent类有一些参数可以设置,比如browsers、os等,但可能没有直接的mobile参数。不过,用户可以通过过滤生成的User-Agent字符串中的关键词,比如'Mobi'或者'Android',来筛选出移动端的代理。例如,User-Agent字符串中包含'Mobi'通常表示移动设备。 接下来,用户可能需要一个示例代码来演示如何实现这一点。比如,使用UserAgent库生成多个代理,然后通过检查字符串中的关键字来筛选出移动端的。或者,是否有其他的方法直接指定生成移动端的代理。 另外,考虑到fake_useragent库的数据来源是在线更新的,可能存在版本差异,不同版本的库可能有不同的方法。需要确认当前版本是否支持相关功能。如果官方文档中没有明确说明,可能需要通过测试代码来验证。 然后,用户可能遇到的问题包括如何安装库,如何处理可能的异常,比如UserAgentError,当无法获取数据时应该使用缓存或者离线数据。因此,在回答中应该包含异常处理的建议,例如设置use_cache_server=False或设置fallback参数。 此外,还需要考虑生成移动端User-Agent的可靠性,不同的网站可能识别User-Agent的方式不同,可能需要更精确的过滤条件。例如,使用正则表达式匹配特定的移动设备标识。 最后,提供一个完整的代码示例,展示如何生成移动设备的User-Agent,并处理可能的异常情况,确保代码的健壮性。同时,提醒用户注意UserAgent的更新机制,以及缓存的使用,以避免因网络问题导致无法获取数据。</think>在Python的`fake_useragent`库中生成移动设备用户代理的步骤如下: ### 一、安装库 ```bash pip install fake-useragent ``` ### 二、基础使用方法 ```python from fake_useragent import UserAgent # 创建实例并指定移动端设备 ua = UserAgent(os='android') # 设置操作系统为安卓移动端 mobile_agent = ua.random print(mobile_agent) # 或指定iOS移动端 ua = UserAgent(os='ios') mobile_agent = ua.random ``` ### 三、高级筛选方法 通过正则表达式筛选移动设备标识: ```python import re from fake_useragent import UserAgent ua = UserAgent() all_agents = [ua.random for _ in range(50)] # 批量生成 # 使用正则表达式过滤移动端UA mobile_agents = [ agent for agent in all_agents if re.search(r'Android|iPhone|iPad|Mobile|Tablet', agent) ] ``` ### 四、异常处理建议 ```python from fake_useragent import UserAgent, FakeUserAgentError try: ua = UserAgent( use_cache_server=False, # 禁用缓存更新 fallback="Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X)..." # 备用UA ) mobile_agent = ua.iphone # 直接调用iOS设备UA except FakeUserAgentError: mobile_agent = "备用移动端UA" ``` ### 五、注意事项 1. 该库通过在线数据库动态更新UA列表[^3] 2. 移动设备标识符包括但不限于: - `Android` - `iPhone` - `Mobile Safari` - `Windows Phone` 3. 部分网站会检测`navigator.userAgent`与`navigator.platform`的一致性[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值