手机浏览器UA设置
UA= User Agent
用浏览器浏览网页时,浏览器会发送User Agent到网站服务器,
服务器可以根据User Agent识别用户的操作系统及版本,浏览器及版本.
然后判断用户浏览器可以支持的功能,从而返回给浏览器不同的代码,
但这种差异一般会很小,甚至没有,所以我们很难会觉察到它的存在
?
?
很多视频网站比如优酷都有对ipad进行优化,可以选择观看高清版视频,而iphone版就不行,能否在浏览器中加入ipad的ua让这些视频网站将设备识别为ipad跳转到ipad版以便能观看高清视频呢?
UA的含义?
Android标准的手机浏览器UA?
1.Android自带浏览器的UAProfile实现
? ? 1) UI设置
? ? 在Android浏览器的地址栏内输入“about:debug”,并进入,这时不会有新的网页显示,但这却使浏
览器进入了debug模式。
? ? 在Menu菜单中选择“More”,在弹出的菜单中选择“Settings”,在弹出的页面上你会发现多了一些
“debug”相关项,最后一项即为“UAString”,点击,弹出当前的已有的配置项
? ? 2)代码实现:
strings.xml: \packages\apps\Browser\res\values\strings.xml
其中有如下一段:
<!-- Do not tranlsate. ?Development option -->
<string-array name="pref_development_ua_choices" translatable="false">
? ? ? ? <item>Android</item>
? ? ? ? <item>Desktop</item>
? ? ? ? <item>iPhone</item>
</string-array>
<!-- Do not tranlsate. ?Development option -->
<string-array name="pref_development_ua_values" ?translatable="false">
? ? ? ? <item>0</item>
? ? ? ? <item>1</item>
? ? ? ? <item>2</item>
?</string-array>
pref_development_ua_choices:对应的是UserAgent时选项的名字
pref_development_ua_values:对应的是不同的UserAgent,
BrowserSettings.java:\packages\apps\Browser\src\com\android\browser\BrowserSettings.java
其中有如下代码:
private static final String DESKTOP_USERAGENT = "Mozilla/5.0 (Macintosh; " +
? ? ? ? ? ? "U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.17 (KHTML, " +
? ? ? ? ? ? "like Gecko) Version/4.0 Safari/530.17";
? ? private static final String IPHONE_USERAGENT = "Mozilla/5.0 (iPhone; U; " +
? ? ? ? ? ? "CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 " +
? ? ? ? ? ? "(KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16";
?public void update(Observable o, Object arg) {
? ? ? ? ? ? BrowserSettings b = (BrowserSettings)o;
? ? ? ? ? ? WebSettings s = mSettings;
? ? ? ? ? ? s.setLayoutAlgorithm(b.layoutAlgorithm);
? ? ? ? ? ? if (b.userAgent == 0) {
? ? ? ? ? ? ? ? // use the default ua string
? ? ? ? ? ? ? ? s.setUserAgentString(null);
? ? ? ? ? ? } else if (b.userAgent == 1) {
? ? ? ? ? ? ? ? s.setUserAgentString(DESKTOP_USERAGENT);
? ? ? ? ? ? } else if (b.userAgent == 2) {
? ? ? ? ? ? ? ? s.setUserAgentString(IPHONE_USERAGENT);
? ? ? ? ? ? }
由此我们可以看出第一段Java代码是不同的UserAgent字符串,从第二段代码中我们可以看出strings.xml中那个整
数的数组和不同UserAgent的对应关系,0对应默认的UserAgent,即Android Chrome Lite自己的UserAgent,1对应
的是Mac OS的UserAgent,2对应的是IPhone OS的UserAgent。
2. 设置自己的UAProfile
1) 在strings.xml中添加一个UserAgent选项的名字,然后添加一个序号
2) 在BrowserSettings.java中读取自己的UserAgent字符串,然后再加一个if:
else if (b.userAgent == 3) {
? ? s.setUserAgentString(YOUR_OWN_USERAGENT);
UAProf 的全称是User Agent Profile,就是 用户代理描述,主要用于描述终端设备的性能和优先选
择信息,主要是为了让其他设备(比如WAP网关)能够自动识别终端的能力,从而可以优化传递给终端的
内容格式。UAProf通常描述了终端的硬件平台、软件平台、与此设备相连的网络环境特性等信息。
? ? User Agent profile 满足这一规格的终端机要在HTTP1.1协议报头的User Agent Field领域提供以下
的终端机信息。 - 终端机的硬件信息:制造厂商、类型、屏幕大小(像素、文字) 等。 ?软件信息:应用
软件管理版本、SK-VM版本、MIN等。 - 无线因特网服务供应商信息:SKT、KTF、LGT、 STI、 HSP等。
? ? 在HTTP协议里面是没有UA Profiler字段的,由于HTTP协议在手持终端上实践和PC上差别巨大,所以在
手持终端上引入了这个字段,属于扩展字段;
? ? 通过UA Profiler,我们可以看出浏览器加载页面的快慢,例如下载脚本有没有被阻断,最高可打开多
少个链接,是否支持“Date:”路径。
? ? UAProf常见于运营商定制终端。运营商对这些UAProf进行集中管理。运营商根据它对终端设备的软硬
件特性进行判断,当向终端设备推送自己的增值业务时,会跟据这些特性来推送适合终端设备的内容。比
如可以判断出终端设备是支持MP4还是RM格式视频。根据支持不同的视频格式,推送不同的视频内容。
UA错误时会造成什么样的情况
? ? 一般UA错误后会造成手机与网络传输数据出现异常,比方说下载的图片不适应手机屏幕,或者造成无
法下载游戏,软件,联网时提示页面错误。
User-Agent是浏览器请求头中带有的一个头信息,包含了http请求发起者的信息。http协议在请求头中包含这个域的主要目的是为了统计数据,同时可以达到追踪是否有违背协议的情况出现以及根据特定的用户适配特定的页面的需求。浏览器领域的纷争给了UA更多的发展,目前http://www.user-agents.org/列出的ua已经多达上百条。我们目前最常用的就是各种终端设备(尤其是手机)浏览器提交请求时设置的UA,比如苹果iphone手机的UA可能在访问时就是“IUC(U;iOS 5.0.1;Zh-cn;320*480;)/UCWEB8.1.4.125/42/997”,这个比较文艺,看样子像是iphone用UC的;一个纯粹的果粉可能是“Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8C148”,而android的可能就是“|Mozilla/5.0 (Linux; U; Android 2.2.2; zh-cn; ZTE-U V880 Build/FRF91) UC AppleWebKit/530+ (KHTML, like Gecko) Mobile Safari/530”,symbian可能是“MQQBrowser/2.8 (E71-1;SymbianOS/9.1 Series60/3.0)”。我们可以根据UA统计各种设备的访问量,达到统计的目的,同时,如果不做UA伪装的话,也可以找到各种spider和crwaler。
如何去读一个UA呢?根据RFC2616的描述要求,一个ua字段是这样的形式User-Agent = "User-Agent" ":" 1*( product | comment ),方便起见,一般所product描述是依照其重要性来排序的,先出现的相对重要一点。product的形式就是名字和版本号,中间用‘/’隔开。就wikipedia上的说法,大多数的浏览器目前使用的UA格式如下:Mozilla/[version] ([system and browser information]) [platform] ([platform details]) [extensions]。并在文中举例:Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405
其中
其中各种引擎说明,可以参看这篇文章。
你可以通过这里来测试你的浏览器的UA,当然如果自己写爬虫的话,也记得做好UA的伪装工作。如果要做一个PC站点配套的wap站点,如果能力足够且时间充裕的话,完全可以重写页面,用HTML5或者是普通XHTML来进行。写好以后,条件好的单独部署单独维护,条件差的,可以统一部署,由应用服务器端(apache有开源的模块)根据UA来进行判断需要显示的页面代码,或者交由框架判断也可以(写过滤器对request进行首回合判断)。
?
?
转自:http://blog.csdn.net/lizzy115/article/details/7851972