ua.ini文件可以让Opera伪装成别的浏览器。对于那些结构很差的声称支持IE和Netscape(通常指旧版本)的网站,如果没有被屏蔽的话,Opera通过ua.ini是可以正常显示的。 原文参考

如果你用Opera很久了,你可能碰到过一些网站说不支持Opera。很多时候,它是支持的,如果网站不歧视Opera的话。

今天我们要看一个办法可以让你决定Opera如何报告自己。Opera8引入了ua.ini,一个可以让你控制Opera报告的用户代理(user-agent)的文件。

什么是用户代理?每一个浏览器在你访问时都会向网站报告自己。比如,你的浏览器报告自己是Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)。

为什么这样呢?好吧,坐下来听我慢慢说。(如果你已经知道了用户代理嗅探并举起手来对上帝发誓说你绝对不会考虑用户代理嗅探,那么你可以跳到下面的Opera地ua.ini选项。)

我想我下面的叙述应该是正确的,如果谁知道还有网站有更好的时间表,请告诉我。

故事发生在很多年以前。回溯到那个时候,曾经有一个Netscape和IE,他们看起来都差不多。然后Netscape引入了一个新功能。网站开始检查看你是用IE还是Netscape。如果你用了Netscape,你就会登陆到一页,如果你用IE,你就会登陆到另一页…然后你会被告知该死的“这个页面为…设计”信息。

最终的,IE也增加了同样的功能,但是太晚了。已经有很多网站检查你是否用Netscape了。他们到底想干什么呢?

好了,也许大家有很多的建议,但是IE真正做的是模仿成Netscape。事实上,到今天为止,IE仍旧伪装成Netscape,某种程度上。这里是IE6(从Windows XP)汇报的用户代理:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

你注意到第一个单词是Mozilla了吗?为什么是Mozilla?因为那是Netscape对自己的称呼。是的,后来有一个叫Mozilla的浏览器包,那就是基于Netscape的开放代码版本的浏览器。晕了?我还没开始呢。

随着发展,IE有了Netscape不具备的功能,所以人们开始找IE用户代理。然后Netcape加了功能,越来越多的用户被告知“这个网站被设计…”。

“阿!打住!”你喊道。我希望如此。所以现在有些网站检测你是用Netscape呢还是IE。太差了。然后他们开始检测版本号,然后用户被告知“这个网站针对X版本5设计。”当然然后浏览器X放出了版本6但很多网站不能正确地检测“高于5”,所以就又不能正常显示了。

更糟糕的是,Mac和Windows的Netscape还有区别,Mac和Windows的IE也是。所以现在大家在嗅探你的浏览器类型,版本,还有操作系统版本。(我们还没讨论实际上Windows XP叫做“Windows NT 5.1”呢)

“但是等一下”你喊道,努力的挣扎着一线希望,“过去几年里我们有了两个新的浏览器!Firefox和Safari!当然现在的网站必须知道他们不能只迎合一部分浏览器了!”

不幸的是这种乐观是完全没有理由的。这两款浏览器必须面对已经存在网页的现实。他们不能只是因为用户不用浏览器X就让他们不访问某些网站。事实上,Firefox加了一个关键词:Gecko:

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3

别人怎么办呢?他们开始找“Gecko”这个词…当然你可以看到相应的情况。Safari喜欢Firefox的想法,所以就假装成Firefox了,在用户代理中包含了“Gecko”:

Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312

现在不奇怪在如此众多只认IE和Netscape的网站中如何找到自己的了吧。

可用的选项 

Opera改做什么呢?他们可以说“我是Opera,让我进去”但是大部分网站不同意。所以Opera伪装。默认的Opera伪装成IE。电击F12你可以改变当前的认证(或者在网络选项中设置,见第六天:高级选项。)

Mac用户:一些网站开始意识到曾经伟大的IE/Mac已经死了的事实。我就曾经访问过一个网站告诉我使用更新的浏览器。哦,顺便提醒一些,Firefox/Max不只是不报告自己是基于Gecko的,它还伪装成IE6,你看这里“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)”。这些说明你比Windows用户更需要这个功能。

Opera8 改进列表里报告了下面可用的选项:

  1. 认证为Opera
  2. 认证为Mozilla
  3. 认证为IE
  4. 认证为Mozilla,完全隐藏Opera ID
  5. 认证为IE,完全隐藏Opera ID

这里1,2,3就是(我认为)你通过F12菜单看到的选项。那4和5是什么呢,它们是把用户代理串中的“Opera”完全去掉的选项。

通过编辑ua.ini文件你可以欺骗网站让它相信你用的是别的浏览器。很多时候你会发现网站显示正常,即使它提醒你必须用Netscape和IE。对于那些微软自己的网站高度推荐使用这个,特别是MSN有过莫须有屏蔽Opera的历史。

如何使用

文件是很简单的。编辑文件之前确保Opera没有运行。格式像这样:

Opera Preferences version 2.0
; Do not edit this file while Opera is running
; This file is stored in UTF-8 encoding

[Identity]
www.opera.com=1
pncbank.com=4
online.wellsfargo.com=4
gmail.google.com=1
gmail.com=1
msdn.microsoft.com=2

简单的添加相同的格式就可以了。

Haavard告诉我当你用检查新版本功能时(帮助菜单下面,以后会说)Opera会检查这个ua.ini文件的更新。就是说如果你把ua.ini搞坏了,你可以删掉它,重起Opera,然后检查新版本,它就会自动重建。

哪里找到这个文件

Mac users: use ~/Library/Preferences/Opera Preferences/. Windows and other users should check opera:about for the “Opera directory” (which usually ends with /profile/) and you will find the file in that directory.

“Why doesn’t Opera just remove the word ‘Opera’ from the F12 user agent strings?” Simply put, because if they did that, Opera would appear to disappear from the web. People who make websites would never see any of their visitors using Opera. Even as it is now, there is a good chance that a lot of sites are under-reporting Opera usage because they don’t properly check the user agent string.

Hopefully, Opera will soon introduce per-site preferences through the user interface, and you won’t have to edit an INI file to make these changes. It would be nice to manage these settings as simply (or more simply!) than you can edit cookies.

So that’s the ua.ini and why you need it and how to use it.

Mac用户“用  ~/Library/Preferences/Opera Preferences/。Windows和其他用户应该通过opera:about查看“Opera目录”(通常在/profile/下面),你应该能找到的。

“为什么Opera不把F12用户代理中的‘Opera’删掉呢?”很简单,如果这样的话,Opera就会从网上彻底消失了。网站开发者就不会看到任何访客使用Opera了。即使现在,很多网站低估了Opera的使用就是因为他们不能正确地检查用户代理串。

幸运的,Opera就要在用户界面中引入网站预设选项,你就不必编辑ini文件来做修改了。能通过简单的管理设置(或更简单!)更不是编辑cookies就太好了。

这就是ua.ini和为什么要它,如何用它了。