Reworked to remove synchronous XHR from content script for better performance.

This commit is contained in:
jsclary
2014-07-07 16:31:47 -05:00
parent d5b0255d3e
commit 4a59ce0939
7 changed files with 37 additions and 35 deletions
View File
+7 -4
View File
@@ -1,12 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<script src="/js/options.js"></script>
<link rel="stylesheet" type="text/css" href="/css/options.css">
<script src="/js/popup.js"></script>
<link rel="stylesheet" type="text/css" href="/css/popup.css">
</head>
<body>
<div class="header">
<a href="bitcoin:14B7hKTgSRKQewJbj8YQLy3nJ7QL36LBJT" target="_blank"><img src="/images/bitcoindonate.png" class="donateButton" /></a>
<a href="https://coinbase.com/checkouts/0ec4a16aa8227d3a43e4e200a79b55c5" target="_blank"><img src="/images/bitcoindonate.png" class="donateButton" /></a>
<img src="/images/icon64.png" class="extensionIcon" />
<div class="extensionTitle">
<span>RubberGlove</span>
@@ -18,7 +18,10 @@
</div>
</div>
<div>
<a href="https://www.panopticlick.com/" target="_blank">Visit panopticlick.com to see it in action.</a>
<p style="text-align: center;">
<a href="https://panopticlick.eff.org/" target="_blank">Visit panopticlick.eff.org to see it in action.</a></br>
<a href="http://cdn.rawgit.com/jsclary/RubberGlove/master/bomViewer/index.html" target="_blank">View your Browser Object Model.</a>
</p>
<p>Third-party cookies make fingerprinting unecessary. Disable third-party cookies in Chrome's privacy settings.</p>
<p>Plugins including Flash, Java, Quicktime and Silverlight expose additional information that's difficult to block. Plugins should be set to "Click to play" or disabled to minimize exposure.</p>
</div>
+1 -7
View File
@@ -1,4 +1,4 @@
window.navigator = window.clientInformation = function() {
var bomOverloadFunction = function() {
var oldNavigator = navigator;
var altNav = {};
var propertyNames = Object.getOwnPropertyNames(oldNavigator);
@@ -113,10 +113,4 @@ window.navigator = window.clientInformation = function() {
}
}
return altNav;
}();
if(document.currentScript.id == '_RubberGlove_removeHead') {
document.currentScript.parentNode.parentNode.removeChild(document.currentScript.parentNode);
} else {
document.currentScript.parentNode.removeChild(document.currentScript);
}
+9 -17
View File
@@ -1,20 +1,12 @@
//console.log("RubberGlove: Content Script for " + window.location.href);
var compositeScript =
"window.navigator = window.clientInformation = (" + bomOverloadFunction.toString() + "());\n"
+ "(" + scriptCleanupFunction.toString() + "());";
function loadScript(name) {
var request = new XMLHttpRequest();
request.open('GET', chrome.runtime.getURL(name), false);
request.send(null);
if (request.status === 200) {
return request.responseText;
}
console.error("RubberGlove: Failed to load " + name);
return;
}
var pageScripts = document.createElement('script');
pageScripts.type = 'text/javascript';
pageScripts.async = false;
pageScripts.text = loadScript("js/bomOverride.js");
var pageScript = document.createElement('script');
pageScript.type = 'text/javascript';
pageScript.async = false;
pageScript.text = compositeScript;
var html = document.documentElement
var headTags = document.getElementsByTagName("head");
@@ -22,7 +14,7 @@ var head = headTags.length > 0 ? head = headTags[0] : null;
if(!head || head != html.firstChild) {
head = document.createElement('head');
html.insertBefore(head, html.firstChild);
pageScripts.id = "_RubberGlove_removeHead";
pageScript.id = "_RubberGlove_removeHead";
}
window.addEventListener("message", function(event) {
if(event.source != window) return;
@@ -34,4 +26,4 @@ window.addEventListener("message", function(event) {
});
}
});
head.insertBefore(pageScripts, head.firstChild);
head.insertBefore(pageScript, head.firstChild);
View File
+6
View File
@@ -0,0 +1,6 @@
var scriptCleanupFunction = function() {
if(document.currentScript.id == '_RubberGlove_removeHead')
document.currentScript.parentNode.parentNode.removeChild(document.currentScript.parentNode);
else
document.currentScript.parentNode.removeChild(document.currentScript);
}
+14 -7
View File
@@ -1,9 +1,10 @@
{
"manifest_version": 2,
"name": "RubberGlove",
"short_name": "RubberGlove",
"version": "14.7.7.2",
"author": "Jason S. Clary",
"description": "Blocks common browser fingerprint techniques to improve your privacy.",
"version": "14.7.7.1",
"icons": {
"16": "images/icon16.png",
"19": "images/icon19.png",
@@ -14,8 +15,17 @@
},
"content_scripts": [
{
"matches": [ "*://*/*", "https://*/*", "file://*/*" ],
"js": ["js/injectScripts.js"],
"matches": [
"http://*/*",
"https://*/*",
"file://*/*",
"ftp://*/*"
],
"js": [
"js/bomOverload.js",
"js/scriptCleanup.js",
"js/injectScripts.js"
],
"run_at": "document_start",
"all_frames": true
}
@@ -26,14 +36,11 @@
},
"browser_action": {
"default_icon": "images/icon19.png",
"default_popup": "html/options.html"
"default_popup": "html/popup.html"
},
"permissions": [
"tabs",
"privacy"
],
"web_accessible_resources": [
"js/bomOverride.js"
],
"incognito": "spanning"
}