一款切换浏览器useragent的扩展插件
插件名字为 User-Agent Switcher
ID : dbclpoekepcmadpkeaelmhiheolhjflj
此插件的一个优点是修改ua之后,所有页面的ua都会改变,页面刷新之后还是修改后的值。
通过研究插件源码得知其原理是在页面加载之前进行js注入,修改ua的地方是一个prompt弹窗,
var action = function (top, urls) {
if (!top) return true;
if (urls.indexOf('*') !== -1) return true;
if (urls.indexOf('all_urls') !== -1) return true;
/* */
for (var i = 0; i < urls.length; i++) {
var url = urls[i];
if (url === top) return true;
else if (top && top.indexOf(url) !== -1) return true;
}
return false;
};
background.receive("storage", function (data) {
var top = data.top, urls = data.url.replace(/\s+/g, '').split(",");
if (data.useragent) { // 判断ua是否存在
if (action(top, urls)) { //action函数判断url是否变化
var script = document.getElementById("useragent-switcher"); //获取script标签
if (script) script.parentNode.removeChild(script); //如果页面script标签存在,则删除
script = document.createElement("script"); //创建script标签
script.setAttribute("type", "text/javascript");
script.setAttribute("id", "useragent-switcher");
script.textContent = 'navigator.__defineGetter__("userAgent", function() {return "' + data.useragent + '"})'; // 传入修改后的ua
document.documentElement.appendChild(script);
}
}
});
在控制台使用window.navigator.userAgent查看ua或者修改ua,使用window.navigator.userAgent在控制台赋值ua,刷新页面之后修改的ua不见了