在很多时候,我们可能需要更改浏览器的User Agent来让我们有更多的权限做更多的事情,又或者可以做一些想做平时又做不了的事情,这个时候我们就需要更改User Agent来达到我们邪恶的目的,关于User Agent,我们还需要回过头来看看我们的HTTP协议。这里,我们可以使用Fiddler了解HTTP协议。
首先打开Fiddler,然后再Firefox里面打开对Firefox里面的信息的捕捉。(在右下角有一个Fiddler的插件),打开后,我们可以在google里面搜索,然后再Fiddler里面看看我们发送的HTTP请求的Client信息。User Agent的信息主要在HTTP头部信息,这里我们只要看Header部分的信息即可,然后我们可以找到User Agent这一行,这些信息如下。
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5 GTB5
我们可以看到我们请求服务器的时候,会将我们的一些信息发送给接收服务器,即这里有Mozilla信息,操作系统的信息,编码的信息。
很多网站都会通过这些信息响应不同的请求,例如如果你通过手机上网的时候,这个地方的信息可能就是WM或者是IPhone了,如果你想从一般的浏览器中访问手机版的信息,就很难下手了,这个时候,你就需要更改你的User Agent信息来欺骗接收服务器。而在开发Firefox插件的时候,你就需要通过下面的两个XPCOM提供的服务和接口来获取相应的信息。在做之前,最好先了解一下。
createInstance(supportsStringInterface);
Components.classes[
"@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("");
在了解了这两个提供的类之后,我们就可以编写相应的代码了,可以写一个设置的函数,示例代码如下所示。
{
// If the preference is set
if(preference)
{
var supportsStringInterface = Components.interfaces.nsISupportsString;
var string = Components.classes["@mozilla.org/supports-string;1"]
.createInstance(supportsStringInterface);
string.data = value;
this.getPreferencesService().setComplexValue(preference, supportsStringInterface,
}
},
通过上面的函数,我们就可以设置相应的User Agent信息了,例如我们要通过IPhone去访问一个专门提供IPhone手机浏览的网站,就可以通过这个函数实现,示例代码如下所示。
{
try
{
UserAgentSwitcherPreferences.setStringPreference("general.useragent.appName",
"Mozilla");
UserAgentSwitcherPreferences.setStringPreference("general.appname.override",
"Netscape");
UserAgentSwitcherPreferences.setStringPreference("general.appversion.override",
"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");
UserAgentSwitcherPreferences.setStringPreference("general.platform.override",
"iPhone");
UserAgentSwitcherPreferences.setStringPreference("general.useragent.override",
"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");
UserAgentSwitcherPreferences.setStringPreference("general.useragent.vendor",
"Apple Computer, Inc.");
UserAgentSwitcherPreferences.setStringPreference("general.useragent.vendorSub",
"");
}
catch(e)
{
alert(e);
}
}
在编写完成之后,我们只要为load方法添加一个事件即可,代码可以编写如下。
这样,我们就可以在浏览器加载的时候更改相应的User Agent了,值得注意的是,如果你不想一直都这样的话,最好再添加一个方法能够改回来User Agent,:)。
另外,如果你想模拟成IE6,IE7,IE8,就自己去看看这些User Agent的规则是怎样的了。Firefox有一个插件叫User Agent Switcher可以帮助你。
注意:如果这里你改了User Agent,可能改就是所有的Firefox的User Agent请求。
[...] Firefox Add-on – Change Useragent [...]