Firefox中用户代理切换器的工作



firefox中有一个名为"用户代理切换器"的插件,可以作为谷歌机器人、雅虎Slurp或Iphone/Android用户使用网络服务。有人能告诉我它是如何在后台工作的吗。它为执行此任务而修改的属性/属性是什么?

用户代理切换器设置了一组首选项:

general.useragent.appName
general.appName.override
general.appversion.override
general.platform.override
general.useragent.override
general.useragent.vendorSub

这些替换了用户代理字符串的各个部分——就这么简单。它代码中的其他一切都是用户界面和选择逻辑。实际上,我不确定为什么选择这种复杂的方法:只设置general.useragent.override就足够了,它的值将替换整个用户代理字符串。

您可以使用about:config轻松地自己创建该首选项,本文详细介绍了这些步骤。

让我回答Wladimir Palant答案中的问题。

简而言之,UserAgentSwitch的设计似乎遵循了过去的firefox(或一般的浏览器)规范,现在已经过时了。

现在详细介绍:根据MDN在userAgent上的页面,Firefox的userAgent是由Wladimir提到的组件构建的,如:userAgent = appCodeName/appVersion number (Platform; Security; OS-or-CPU; Localization; rv: revision-version-number) product/productSub Application-Name Application-Name-version

但截至2015年8月,这是错误的;根据我的测试,useragent只能从general.useragent.override中被覆盖,并且这些元素被忽略。

尽管如此,Javascript还是公开了它们:

Javascript element      Firefox preference
navigator.appCodeName   ?
navigator.appName       general.appname.override
navigator.appVersion    general.appversion.override
navigator.platform      general.platform.override
navigator.product       ?
navigator.productSub    ?
navigator.vendor        general.useragent.vendor
navigator.vendorSub     general.useragent.vendorSub</code></pre>

MDN的另一个页面说,这些现在已经从Web标准中删除,但大多数浏览器仍然支持它们。有关主要浏览器的典型值,请参阅本网站的示例。(这个页面是日语的,但肯定没有问题。请随意修改。)

读者可能知道大多数网站都会通过检查useragent值来改变自己的行为,但这只是一条经验法则,对网页设计师和页面访问者来说都不可靠。

最新更新