User-Agent那些事
时间:2022-07-24
本文章向大家介绍User-Agent那些事,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
User-Agent,直译就是用户代理,简写为UA。是浏览器访问某网站在请求头部加入的一段标识。用来告诉目标网站,此浏览器运行在什么版本的系统、CPU型号、浏览器内核版本等。
以我当前所使用电脑的UA来看
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36
这就泄露了我目前所用电脑的系统是win10且是64位的,所用的浏览器是Chrome是79版本。可以在这里查询Chrome的更新日志,发现此版本是Tuesday, December 17, 2019
发布,得出我对浏览器的更新态度是怎样的等等。
当然,本篇文章的用途并不是为了让访客了解到以上关于我的信息。而是以下的拓展点。。
- 大平台可以利用UA来标识用户身份并推送广告
- 例如百度站长统计后台会辨识网站用户的年龄、性别等等,则不仅仅是通过IP单一识别。因为在很多时候访客并没有公网IP。假如有一卖某产品的网站接入了百度统计,然后你对该产品非常感兴趣,百度就GET到了这一点,在下一个有接入百度广告的地方给你推荐这一商品同类型的其他商品。。(也许并不是这么简单的识别,起码是一个合理的猜测)
- 例如你的UA包含有HUAWEI字样,则可以变成平台对你用户画像的一部分。例如华为出新品以后会给你更多的展示次数等。
- 站长可以通过UA来识别用户
- 非人类用户 包括网络搜索引擎爬虫,程序语言,或者其他。 假如一个用户的UA中含有以下 “curl”、“requests”、“python”、“php”、“java”、“urllib”、“Java”、“Ruby”、“Go-http-client"等字样,则可以判断为非人类用户。如果对网站产生大量访问加重了服务器负担的话,我们就可以通过技术手段ban了这类。如果我们写爬虫或者批量程序的话,肯定是要避免UA中有这些敏感字段
- 恶意访问用户
假如我们的网站含有一个严重的漏洞。一个偶然的情况下,被‘小黑’发现了,他正在兴奋的利用此漏洞做不可告人的事。这事被我们的网站管理员发现了,立马ban了他的IP。小黑同时了发现了此时访问不了我们的网站了,所以他换了一个IP继续做不可告人的事。但是我们还是可以通过UA来发现,此小黑就是彼小黑。这也就告诉我们了一个道理,
浏览器的隐私窗口仅仅是对我们本地起到了隐私作用
。
- 通过UA来识别攻击行为 从网络攻击者的角度来看,批量自动化已经成为未来趋势。而此类行为多利用开源程序,或者自写脚本。正如上条中的那样,UA中包含有程序语言的字样,大概率已经决定了“他不是一个好人”,则可以进一步观察该用户的其他访问行为是否带有攻击性。再比如,某一天查到访问日志中出现了"antsword"字样,则表明你的服务器可能已经成为了木马的温床。(当然,UA是可以更改的,识别攻击行为主要还是通过用户的“行为”。)
最后,一些工具:
UA收集 https://user-agents.net/ UA分析 http://tool.i5.gs/?url=ua 识别真假爬虫的方式 PTR解析记录理解与用途 浏览器指纹 https://browserleaks.com/canvass
- android 减少图片出现oom错误
- android分包方案
- 系统负载能力浅析
- 微软正式发布了Microsoft.Bcl.Async
- parcel和parcelable
- Windows Phone 7 WebBrowser 中文乱码问题
- Java并发包类总览
- 作业调度框架 Quartz.NET 2.0 beta 发布
- 系统捕获异常并发送到服务器
- 当调用GetAuthorizationGroups() 的错误-“试图访问卸载的应用程序域“(Exception from HRESULT: 0x80131014)解决方案
- WCF 4.0路由服务Routing Service
- ExpandableListView简单应用及listview模拟ExpandableListView
- 文件句柄与文件描述符
- android GifView分享
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 读者问:学完SSM,该学什么呢?
- go-zero 微服务框架介绍
- redis-cli 未找到命令的一个解决方式
- 【每日一题】42. Trapping Rain Water
- iframe跨域安全
- Efficiently traversing InnoDB B+Trees with the page directory (9.利用页目录实现对B+树的高效遍历)
- C语言 | 每日基础(37)
- 《求求大厂给个Offer》Map面试题
- C语言 | 每日基础(40)
- kubernete编排技术七:secret
- springcloud+eureka整合seata-tcc模式
- 【源码】手把手教你用Python实现Vivado和ModelSim仿真自动化
- typescript基础篇(7):类型检查机制
- 说来惭愧,我被ulimit摔了一跤...
- Kubectl 备忘录