User Agent的学习
什么是User-Agent?
User-Agent是一个特殊字符串头,被广泛用来标示浏览器客户端的信息,使得服务器能识别客户机使用的操作系统和版本,CPU类型,浏览器及版本,浏览器的渲染引擎,浏览器语言等。
不同的浏览器(IE,FF,Opera, Chrome等)会用不同的用户代理字符串(User Agent Strings)作为自身的标志,当搜索引擎(Google,Yahoo,Baidu,Bing)在通过网络爬虫访问网页时,也会通过用户代理字符串来进行自身的标示,这也是为何网站统计报告能够统计浏览器信息,爬虫信息等。网站需要获取用户客户端的信息,了解网站内容在客户端的展现形式,一些网站通过判断UA来给不同的操作系统,不同的浏览器发送不同的页面,不过这也可能造成某些页面无法再某个浏览器中正常显示.
用户代理字符串包括6个不同个部分:
如下:
Mozilla/5.0(compatible;X11;U;Linux i686;en-US) Gecko/20081202 Firefox(Debian-2.0.0.19-0etch1)
- Mozilla/5.0 浏览器标志:包括应用名Mozilla和版本号5.0;
- compatible 浏览器兼容标志:表示支持主要功能集
- U 加密标志:该字段逐步被取消(N表示无安全加密,I表示弱安全加密,U表示强安全加密)
- Linux i686 操作系统标志:linux
- en-US 语言标志:英文
- Gecko/20081202 渲染引擎标志:Gecko
- Firefox(Debian-2.0.0.19-0etch1) 浏览器版本信息:firefox
为什么浏览器User-agent总是有Mozilla字样?
User-agent String里的历史故事:http://nonfu.me/p/8262.html#6704859-tsina-1-74270-c5f225ba0edaae7b53a5eca6ead5f75f
User-Agent的简单用法:
- 当用户使用FF访问一个网站时,网站通过用户代理字符串获取该用户的浏览器版本,当发现该版本的FF无法完美展现网站内容时,就提出个性化的提示,升级浏览器来展现最新的WebGL 和HTML5内容
- 网站可以根据用户代理字符串给出不同的css文件,保证在不同的浏览器上都展示出最好的效果。
- 伪装 user agent 来回避某些侦测特定浏览器才能读取的网站。
以上转自:http://www.360doc.com/content/14/0218/02/15723785_353395087.shtml
获取User-agent值:
在JAVA中使用 request.getHeader("User-Agent")得到浏览器的User-Agent
PHP中用$_SERVER[HTTP_USER-AGENT]获得
JS中用navigator.userAgent获得。
在 ASP.NET 中使用 Request.Header["User-Agent"] 得到。
修改常见浏览器UA的方法:http://www.zhixing123.cn/jiaocheng/40469.html
Chrome伪装UA的方法绕过检测。具体方法:http://blog.csdn.net/iceman03/article/details/20528771
其他扩展阅读:
User-agent 字串史: http://www.kuqin.com/shuoit/20150312/345160.html,
http://www.cnblogs.com/egger/archive/2013/04/20/3032070.html
各大搜索引擎的User-Agent: http://www.cnblogs.com/iack/p/3557371.html
手机浏览器的User-agent:http://blogread.cn/it/article/4063?f=wb
各大浏览器各版本User-agent汇总:http://weibo.com/p/230418ac467e560102vebj
注:本文中很多内容已经有网友做过总结,在学习UA的过程中,搜集下来的一些比较好的,也不复制粘贴了,相关链接可以参考。(我是勤劳的搬运工~^~)
User Agent的学习的更多相关文章
- 强化学习之七:Visualizing an Agent’s Thoughts and Actions
本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...
- 机器学习&深度学习基础(tensorflow版本实现的算法概述0)
tensorflow集成和实现了各种机器学习基础的算法,可以直接调用. 代码集:https://github.com/ageron/handson-ml 监督学习 1)决策树(Decision Tre ...
- 深度学习课程笔记(七):模仿学习(imitation learning)
深度学习课程笔记(七):模仿学习(imitation learning) 2017.12.10 本文所涉及到的 模仿学习,则是从给定的展示中进行学习.机器在这个过程中,也和环境进行交互,但是,并没有显 ...
- EnforceLearning-主动强化学习
前言: 被动学习Agent由固定的策略决定其行为.主动学习Agent必须自己决定采取什么行动. 具体方法是: Agent将要学习一个包含所有行动结果概率的完整模型,而不仅仅是固定策略的模型: 接下来, ...
- EnforceLearning-被动强化学习
前言: 画图挺好:深度学习进阶之路-从迁移学习到强化学习 专家系统给出了知识节点和规则,使用粒度描述准确性,依靠分解粒度解决矛盾,并反馈知识和推理规则更新.专家系统与机器学习有本质区别,但从机器学习的 ...
- 基于Keras的OpenAI-gym强化学习的车杆/FlappyBird游戏
强化学习 课程:Q-Learning强化学习(李宏毅).深度强化学习 强化学习是一种允许你创造能从环境中交互学习的AI Agent的机器学习算法,其通过试错来学习.如上图所示,大脑代表AI Agent ...
- ML-Agents(二)创建一个学习环境
ML-Agents(二)创建一个学习环境 一.前言 上一节我们讲了如何配置ML-Agents环境,这一节我们创建一个示例,主要利用Reinforcement Learning(强化学习). 如上图,本 ...
- 强化学习之六:Deep Q-Network and Beyond
本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...
- 强化学习之四:基于策略的Agents (Policy-based Agents)
本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...
随机推荐
- 微信小程序腾讯云配置Tomcat https端口
在个人开发微信小程序时,发布之前要配置微信小程序的域名https及域名的SSL证书的申请及安装 我用的是腾讯云,SSL证书申请好之后,点击下载,解压文件夹,会有如图,根据你要配置的服务器是哪种,我是t ...
- NEC 框架规范 animation
/* animation *//* 淡入 */.a-fadein{-webkit-animation-name:fadein;-moz-animation-name:fadein;-ms-animat ...
- ES6 async await
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- IPC进程间通信---消息队列
消息队列 消息队列:消息队列是一个存放在内核中的消息链表,每个消息队列由消息队列标识符标识.与管道不同的是消息队 列存放在内核中,只有在内核重启(即操作系统重启)或者显式地删除一个消息队列时,该消息队 ...
- ab工具测试 swoole 和 ngixn+php-fpm 的并发对比
测试样例: 执行的一条sql记录的1w次插入分两组: 一组用nginx+pfm 来执行, 一组用swoole 来执行 公平性保证前提: @1.为了保证公平性, 在nginx里把 access_log, ...
- CentOS上安装oracle11g报错处理
最近,在处理oracle gateway的报错问题.只因个人的测试环境已经迁移到docker上了,又懒得装一套环境就直接在机器上安装oracle11g.今天分享的故事就从此开始-- 运行环境 项目 ...
- jsp+spring+jquery+ajax的简单例子
初学b/s编程,花费了许多时间,进度颇慢! 不过终于完成了一个简单的例子: jsp代码 <%@ page language="java" contentType=" ...
- Dockerfile中npm中Error: could not get uid/gid问题的解决方法
dockerfile 中 使用 npm 的时候报错: 解决办法:https://github.com/tootsuite/mastodon/issues/802
- linux运维、架构之路-shell编程(二)
一.流程控制语句 1.if语句 ①if单分支:一个条件一个结果 1 2 3 4 if 条件 then 命令 fi ②if双分支:一个条件两个结果 1 2 3 4 5 6 if 条件 ...
- centos7编译安装Apache
一.安装 安装之前先将服务器的防火墙关掉. systemctl stop firewalld systemctl disable firewall 第一步: 安装apr 下载: wget -c ...