什么是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的学习的更多相关文章

  1. 强化学习之七:Visualizing an Agent’s Thoughts and Actions

    本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...

  2. 机器学习&深度学习基础(tensorflow版本实现的算法概述0)

    tensorflow集成和实现了各种机器学习基础的算法,可以直接调用. 代码集:https://github.com/ageron/handson-ml 监督学习 1)决策树(Decision Tre ...

  3. 深度学习课程笔记(七):模仿学习(imitation learning)

    深度学习课程笔记(七):模仿学习(imitation learning) 2017.12.10 本文所涉及到的 模仿学习,则是从给定的展示中进行学习.机器在这个过程中,也和环境进行交互,但是,并没有显 ...

  4. EnforceLearning-主动强化学习

    前言: 被动学习Agent由固定的策略决定其行为.主动学习Agent必须自己决定采取什么行动. 具体方法是: Agent将要学习一个包含所有行动结果概率的完整模型,而不仅仅是固定策略的模型: 接下来, ...

  5. EnforceLearning-被动强化学习

    前言: 画图挺好:深度学习进阶之路-从迁移学习到强化学习 专家系统给出了知识节点和规则,使用粒度描述准确性,依靠分解粒度解决矛盾,并反馈知识和推理规则更新.专家系统与机器学习有本质区别,但从机器学习的 ...

  6. 基于Keras的OpenAI-gym强化学习的车杆/FlappyBird游戏

    强化学习 课程:Q-Learning强化学习(李宏毅).深度强化学习 强化学习是一种允许你创造能从环境中交互学习的AI Agent的机器学习算法,其通过试错来学习.如上图所示,大脑代表AI Agent ...

  7. ML-Agents(二)创建一个学习环境

    ML-Agents(二)创建一个学习环境 一.前言 上一节我们讲了如何配置ML-Agents环境,这一节我们创建一个示例,主要利用Reinforcement Learning(强化学习). 如上图,本 ...

  8. 强化学习之六:Deep Q-Network and Beyond

    本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...

  9. 强化学习之四:基于策略的Agents (Policy-based Agents)

    本文是对Arthur Juliani在Medium平台发布的强化学习系列教程的个人中文翻译,该翻译是基于个人分享知识的目的进行的,欢迎交流!(This article is my personal t ...

随机推荐

  1. Flask—03-bootstrap与表单

    bootstrap与表单 Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob Thornton合作基于HTML.CSS.JavaScript 开发的简洁.直观.强悍的前端 ...

  2. Struts2前期(这框架目前正处于淘汰状态)

    Struts2第一天 Struts2的学习路线 1. Struts2的入门:主要是学习Struts2的开发流程(Struts2的开发流程.常见的配置.Action类的编写) 2. Struts2的Se ...

  3. c# LRU实现的缓存类

    在网上找到网友中的方法,将其修改整理后,实现了缓存量控制以及时间控制,如果开启缓存时间控制,会降低效率. 定义枚举,移除时使用 public enum RemoveType    {        [ ...

  4. js的事件流你真的弄明白了吗?

    当浏览器发展到第四代时候,浏览器开发团队遇到了一个有意思的问题:页面的哪一部分会拥有某个特地的事件?要明白这个问题问的是什么,可以想象画在纸上的一组同心圆,如果你把手指放在圆心上,那么你的手指指向的不 ...

  5. 【模板】string中substr函数的运用

    substr有两种用法: 假设:string s = "0123456789" ;  //下标从0开始 ① string a = s.substr(5)               ...

  6. Spring、Spring Boot、Spring Frame、Spring MVC的区别

    Spring框架就像一个厂商,其下有很多产品,如Spring Boot.Spring Frame.Spring Cloud等等. Spring Boot用于快速.方便.简单的搭建一个Spring项目. ...

  7. CentOS6.5安装zabbix3.2.6

    1.安装好httpd和php Zabbix 3需要PHP是至少5.4或更高版本 rpm -ivh http://repo.webtatic.com/yum/el6/latest.rpm yum -y ...

  8. java 时间转换去杠

    public static String minusHyphen(String dateParam){ if(dateParam ==null) return null; if(dateParam.i ...

  9. XPath Helper的安装使用

    XPath Helper的安装使用 xpath helper 是一款chrome浏览器插件,主要用来分析当前网页信息的xpath,在抓取数据时一般会使用到xpath. 安装 下载地址:http://c ...

  10. 学习新框架laravel 5.6 (第一天)

    学习新框架第一天. composer 基本命令: composer list 获取帮助信息 composer init 以交互方式填写composer.json文件信息 composer instal ...