code review + removal of obsolete exception filters

This commit is contained in:
gorhill 2015-11-25 19:38:05 -05:00
parent 05476e9fd3
commit 80c2ef47bc
4 changed files with 61 additions and 30 deletions

View File

@ -1,5 +1,5 @@
d25ad715e4fdf47684422131b2377e1e assets/ublock/unbreak.txt a65d3b35ba116f897c7ef5db2046da73 assets/ublock/unbreak.txt
e65fbcaa573c028770f1d0afada55672 assets/ublock/redirect-resources.txt 56b94e0f8a6b0d010d358ba4f7b7d5c9 assets/ublock/redirect-resources.txt
7a04294b44b88baa34cf3e4bfe0e59db assets/ublock/privacy.txt 7a04294b44b88baa34cf3e4bfe0e59db assets/ublock/privacy.txt
b2dbf435507aa0262b289c67cbef2142 assets/ublock/filters.txt b2dbf435507aa0262b289c67cbef2142 assets/ublock/filters.txt
146704ad1c0393e342afdb416762c183 assets/ublock/badware.txt 146704ad1c0393e342afdb416762c183 assets/ublock/badware.txt

View File

@ -8,17 +8,55 @@
# If the encoding is absent, the data will be converted to base64, and the # If the encoding is absent, the data will be converted to base64, and the
# encoding will be set to `;base64`. # encoding will be set to `;base64`.
hd-main.js application/javascript hd-main.js application/javascript
var L = (function(){ var L = (function(){
var l = {}; var l = {};
var fn = function(){}; var noopfn = function() {};
var props = ["pf","ed","Qe","fd","xh","Uc","ef","zd","Ad","Qc","Ri","Wc","Vc","Xc","Wg","rd","qd","sd","Pe","Id","Hd","Jd","fg","Fd","Ed","Gd","ek","Cd","Bd","Dd","Nj","Sc","Rc","Tc","wg","xd","wd","yd","fh","ld","md","nd","Re","cd","Pc","ke","Yc","Xg","jd","kd","oh","ad","bd","mi","gd","hd","ae","dd","fk","ij","ud","td","vd","ig","od","pd","Yd","$j","Oc","bf"]; var props = ["pf", "ed", "Qe", "fd", "xh", "Uc", "ef", "zd", "Ad", "Qc", "Ri", "Wc", "Vc", "Xc", "Wg", "rd", "qd", "sd", "Pe", "Id", "Hd", "Jd", "fg", "Fd", "Ed", "Gd", "ek", "Cd", "Bd", "Dd", "Nj", "Sc", "Rc", "Tc", "wg", "xd", "wd", "yd", "fh", "ld", "md", "nd", "Re", "cd", "Pc", "ke", "Yc", "Xg", "jd", "kd", "oh", "ad", "bd", "mi", "gd", "hd", "ae", "dd", "fk", "ij", "ud", "td", "vd", "ig", "od", "pd", "Yd", "$j", "Oc", "bf"];
for ( var i = 0; i < props.length; i++ ) { for (var i = 0; i < props.length; i++) {
l[props[i]] = fn; l[props[i]] = noopfn;
} }
return l; return l;
})(); })();
# http://probablyprogramming.com/2009/03/15/the-tiniest-gif-ever # http://probablyprogramming.com/2009/03/15/the-tiniest-gif-ever
handtinytrans.gif image/gif;base64 handtinytrans.gif image/gif;base64
R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
# To neutralize GA scripts. The goal is to provide the minimal API
# expected by clients of these scripts so that the end users are able
# to wholly block GA while minimizing risks of page breakage.
# Test cases (need way more):
# - https://github.com/chrisaljoudi/uBlock/issues/119
#www.google-analytics.com/ga.js application/javascript
#(function() {
# var noopfn = function() {};
# //
# var gaq = function() {};
# gaq.push = function(a) {
# if ( typeof a === 'function' ) {
# a();
# }
# };
# //
# var tracker = function() {};
# tracker._getLinkerUrl = function(a) { return a; };
# //
# var gat = function() {};
# gat._getTrackerByName = function() { return tracker; };
# window._gat = gat;
# //
# (function() {
# var aa = window._gaq || [];
# if ( Array.isArray(aa) ) {
# while ( aa[0] ) {
# gaq.push(aa.shift());
# }
# }
# })();
# window._gaq = gaq;
#})();

View File

@ -3,20 +3,15 @@
# https://twitter.com/JarkkoRytkonen/status/540052376015888385 # https://twitter.com/JarkkoRytkonen/status/540052376015888385
# https://github.com/chrisaljoudi/uBlock/issues/119 # https://github.com/chrisaljoudi/uBlock/issues/119
# https://github.com/chrisaljoudi/uBlock/issues/822
# https://github.com/chrisaljoudi/uBlock/issues/940 # https://github.com/chrisaljoudi/uBlock/issues/940
# To counter `google-analytics.com` in Peter Lowe's list # To counter `google-analytics.com` in Peter Lowe's list
@@||google-analytics.com^$domain=avianca.com|jackbox.tv|musixmatch.com|bikstok.sonymusicshop.dk @@||google-analytics.com^$domain=avianca.com|jackbox.tv|bikstok.sonymusicshop.dk
# From Chrome store: "Go to site http://www.vd.nl/ ... links from dropdown top menu do not work" # From Chrome store: "Go to site http://www.vd.nl/ ... links from dropdown top menu do not work"
# To counter Dan Pollock's, hpHosts, MVPS, Peter Lowe's # To counter Dan Pollock's, hpHosts, MVPS, Peter Lowe's
@@||google-analytics.com/analytics.js$script,domain=www.vd.nl @@||google-analytics.com/analytics.js$script,domain=www.vd.nl
@@||google-analytics.com/plugins/ua/ec.js$script,domain=www.vd.nl @@||google-analytics.com/plugins/ua/ec.js$script,domain=www.vd.nl
# https://github.com/chrisaljoudi/uBlock/issues/821
# => blocking counterpart in Peter Lowe's Ad Server
@@||google-analytics.com/ga.js^$script,domain=zie.nl
# https://github.com/gorhill/uBlock/issues/939 # https://github.com/gorhill/uBlock/issues/939
@@||google-analytics.com/urchin.js$script,domain=live.euroleague.net @@||google-analytics.com/urchin.js$script,domain=live.euroleague.net
@ -93,10 +88,6 @@
# To counter `2mdn.net` in Peter Lowe's, `s0.2mdn.net` in hpHosts # To counter `2mdn.net` in Peter Lowe's, `s0.2mdn.net` in hpHosts
@@||s0.2mdn.net/instream/*$object,script,domain=wsmv.com @@||s0.2mdn.net/instream/*$object,script,domain=wsmv.com
# Videos broken on weather.com
# To counter `www.googletagservices.com` in MVPS, hpHosts, Dan Pollock's
@@||www.googletagservices.com/tag/js/gpt.js^$script,domain=weather.com
# https://github.com/chrisaljoudi/uBlock/issues/409 # https://github.com/chrisaljoudi/uBlock/issues/409
@@||c.speedtest.net^$~third-party @@||c.speedtest.net^$~third-party

View File

@ -222,14 +222,14 @@ RedirectEngine.prototype.supportedTypes = (function() {
RedirectEngine.prototype.resourcesFromString = function(text) { RedirectEngine.prototype.resourcesFromString = function(text) {
var textEnd = text.length; var textEnd = text.length;
var lineBeg = 0, lineEnd; var lineBeg = 0, lineEnd;
var line, fields; var line, fields, encoded;
var reNonEmptyLine = /\S/;
var resourceFromFields = function(fields) { var resourceFromFields = function(fields, encoded) {
var encoded = fields[1].indexOf(';') !== -1;
var data = fields.slice(2).join(encoded ? '' : '\n'); var data = fields.slice(2).join(encoded ? '' : '\n');
this.resources[fields[0]] = this.resources[fields[0]] =
'data:' + 'data:' +
fields[1] + fields[1] +
(encoded ? '' : ';base64') + (encoded ? '' : ';base64') +
',' + ',' +
(encoded ? data : btoa(data)); (encoded ? data : btoa(data));
@ -245,7 +245,7 @@ RedirectEngine.prototype.resourcesFromString = function(text) {
lineEnd = textEnd; lineEnd = textEnd;
} }
} }
line = text.slice(lineBeg, lineEnd).trim(); line = text.slice(lineBeg, lineEnd);
lineBeg = lineEnd + 1; lineBeg = lineEnd + 1;
if ( line.charAt(0) === '#' ) { if ( line.charAt(0) === '#' ) {
@ -253,27 +253,29 @@ RedirectEngine.prototype.resourcesFromString = function(text) {
} }
if ( fields === undefined ) { if ( fields === undefined ) {
fields = line.split(/\s+/); fields = line.trim().split(/\s+/);
if ( fields.length !== 2 ) { if ( fields.length === 2 ) {
encoded = fields[1].indexOf(';') !== -1;
} else {
fields = undefined; fields = undefined;
} }
continue; continue;
} }
if ( line !== '' ) { if ( reNonEmptyLine.test(line) ) {
fields.push(line); fields.push(encoded ? line.trim() : line);
continue; continue;
} }
// No more data, add the resource. // No more data, add the resource.
resourceFromFields(fields); resourceFromFields(fields, encoded);
fields = undefined; fields = undefined;
} }
// Process pending resource data. // Process pending resource data.
if ( fields !== undefined ) { if ( fields !== undefined ) {
resourceFromFields(fields); resourceFromFields(fields, encoded);
} }
}; };