【发布时间】:2012-09-19 10:31:17
【问题描述】:
firefox 中有一个名为 User Agent Switcher 的插件,可以将网络服务用作 Google bot、Yahoo Slurp 或 Iphone/Android 用户。 任何人都可以指导我如何在后台工作。 它修改了哪些属性/属性来执行此任务?
【问题讨论】:
标签: firefox firefox-addon user-agent user-agent-switcher
firefox 中有一个名为 User Agent Switcher 的插件,可以将网络服务用作 Google bot、Yahoo Slurp 或 Iphone/Android 用户。 任何人都可以指导我如何在后台工作。 它修改了哪些属性/属性来执行此任务?
【问题讨论】:
标签: firefox firefox-addon user-agent user-agent-switcher
User Agent Switcher 设置一堆preferences:
general.useragent.appName
general.appname.override
general.appversion.override
general.platform.override
general.useragent.override
general.useragent.vendor
general.useragent.vendorSub
这些替换用户代理字符串的各个部分 - 就这么简单。其代码中的其他所有内容都是用户界面和选择逻辑。实际上,我不确定为什么选择这种复杂的方法:只设置 general.useragent.override 就足够了,它的值将替换整个用户代理字符串。
您可以使用about:config 自己轻松创建该首选项,this article 详细描述了这些步骤。
【讨论】:
让我回答Wladimir Palant's answer中的问题。
简而言之,UserAgentSwitcher 的设计似乎遵循了过去已经过时的 firefox(或一般的浏览器)规范。
现在详细说明:根据MDN's page on userAgent,Firefox 的用户代理是由 Wladimir 提到的组件构建的,如:userAgent = appCodeName/appVersion number (Platform; Security; OS-or-CPU; Localization; rv: revision-version-number) product/productSub Application-Name Application-Name-version。
但截至 2015 年 8 月,这是错误;用户代理只能从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's another page 表示这些现在已从 Web 标准中删除,但大多数浏览器仍然支持它们。主流浏览器的典型值,例如this site。 (这个页面是日文的,但那一定没问题。随意修改。)
可能读者知道大多数网站通过检查 useragent 值来改变他们的行为,但这只是一个经验法则,对于网页设计师和页面访问者来说并不可靠。
【讨论】: