summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firefox/data/free_haaretz.css6
-rw-r--r--firefox/doc/main.md0
-rw-r--r--firefox/free_haaretz.js61
-rw-r--r--firefox/lib/main.js33
-rw-r--r--firefox/manifest.json22
-rw-r--r--firefox/package.json13
-rw-r--r--firefox/test/test-main.js12
7 files changed, 83 insertions, 64 deletions
diff --git a/firefox/data/free_haaretz.css b/firefox/data/free_haaretz.css
deleted file mode 100644
index a2ffe9d..0000000
--- a/firefox/data/free_haaretz.css
+++ /dev/null
@@ -1,6 +0,0 @@
-section#header-reading-list {
- display: none;
-}
-section#header-user-menu {
- display: none;
-}
diff --git a/firefox/doc/main.md b/firefox/doc/main.md
deleted file mode 100644
index e69de29..0000000
--- a/firefox/doc/main.md
+++ /dev/null
diff --git a/firefox/free_haaretz.js b/firefox/free_haaretz.js
new file mode 100644
index 0000000..a688009
--- /dev/null
+++ b/firefox/free_haaretz.js
@@ -0,0 +1,61 @@
+browser.webRequest.onBeforeRequest.addListener(
+ function (details) {
+ var url_parts = details.url.split('?');
+ if (url_parts[1]) {
+ return {
+ redirectUrl: url_parts[0]
+ }
+ }
+ },
+ {
+ urls: [
+ 'http://*.haaretz.co.il/*',
+ 'http://*.haaretz.com/*',
+ ]
+ },
+ [
+ 'blocking',
+ ]
+);
+
+var addresses = [
+ 'http://hrz.haaretz.co.il/bots.js',
+ 'http://www.haaretz.co.il/htz/js/bots.js',
+ 'http://www.haaretz.co.il/htz/js/resp/body_scripts/internal/plugins/adblock.js',
+ 'http://www.haaretz.co.il/htz/js/resp/header_scripts/internal/util/z_adblockutil.js'
+];
+
+
+browser.webRequest.onBeforeSendHeaders.addListener(
+ function (details) {
+ for (var i = 0; i < details.requestHeaders.length; ++i) {
+ if (details.requestHeaders[i].name === 'User-Agent') {
+ details.requestHeaders[i].value = 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)';
+ break;
+ }
+ }
+
+ if (addresses.indexOf(details.url) > -1) {
+ return {
+ requestHeaders: details.requestHeaders,
+ url: 'http://www.haaretz.co.il/htz/js/botzzzz.js'
+ }
+ }
+
+ return {
+ requestHeaders: details.requestHeaders
+ };
+ },
+ {
+ urls: [
+ 'http://*.haaretz.co.il/*',
+ 'http://*.haaretz.com/*',
+ ]
+ },
+ [
+ 'blocking',
+ 'requestHeaders'
+ ]
+);
+
+
diff --git a/firefox/lib/main.js b/firefox/lib/main.js
deleted file mode 100644
index cd47a05..0000000
--- a/firefox/lib/main.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var {Cc, Ci, Cr} = require('chrome');
-var data = require("sdk/self").data;
-var pageMod = require("sdk/page-mod");
-
-pageMod.PageMod({
- include: "*.haaretz.co.il",
- contentStyleFile: data.url('free_haaretz.css')
-});
-
-
-var observer = {
- observe: function(subject, topic, data) {
- if (topic == 'http-on-modify-request') {
- var channel = subject.QueryInterface(Ci.nsIHttpChannel);
- if (/haaretz\.co(m|\.il)/.test(channel.originalURI.host)) {
- channel.setRequestHeader('User-Agent', 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)', false);
- channel.originalURI.path = channel.originalURI.path.split('?')[0];
- }
- if (/\/htz\/js\/bots\.js/.test(channel.originalURI.path)) {
- subject.cancel(Cr.NS_BINDING_ABORTED);
- }
- if (/\/htz\/js\/resp\/header_scripts\/internal\/util\/z_adblockutil\.js/.test(channel.originalURI.path)) {
- subject.cancel(Cr.NS_BINDING_ABORTED);
- }
- if (/\/htz\/js\/resp\/body_scripts\/internal\/plugins\/adblock\.js/.test(channel.originalURI.path)) {
- subject.cancel(Cr.NS_BINDING_ABORTED);
- }
- }
- }
-};
-
-var observerService = Cc['@mozilla.org/observer-service;1'].getService(Ci.nsIObserverService);
-observerService.addObserver(observer, 'http-on-modify-request', false);
diff --git a/firefox/manifest.json b/firefox/manifest.json
new file mode 100644
index 0000000..6af4816
--- /dev/null
+++ b/firefox/manifest.json
@@ -0,0 +1,22 @@
+{
+ "name": "FreeHaaretz",
+ "version": "0.7.1",
+ "manifest_version": 2,
+ "description": "A nefarious extension that easily bypasses the Haaretz paywall",
+ "homepage_url": "http://yuvadm.github.io/free-haaretz",
+ "background": {
+ "scripts": ["free_haaretz.js"],
+ "persistent": true
+ },
+ "content_scripts": [{
+ "matches": ["*://*.haaretz.co.il/*"],
+ "css": ["free_haaretz.css"]
+ }],
+ "permissions": [
+ "contentSettings",
+ "webRequest",
+ "webRequestBlocking",
+ "http://*.haaretz.co.il/",
+ "http://*.haaretz.com/"
+ ]
+}
diff --git a/firefox/package.json b/firefox/package.json
deleted file mode 100644
index dc773f9..0000000
--- a/firefox/package.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "name": "free-haaretz",
- "title": "Free Haaretz",
- "description": "A nefarious extension that easily bypasses the Haaretz paywall",
- "author": "Yuval Adam",
- "license": "Public Domain",
- "version": "0.7.1",
- "main": "lib/main",
- "engines": {
- "firefox": ">=38.0a1",
- "fennec": ">=38.0a1"
- }
-}
diff --git a/firefox/test/test-main.js b/firefox/test/test-main.js
deleted file mode 100644
index 147f98a..0000000
--- a/firefox/test/test-main.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var main = require("./main");
-
-exports["test main"] = function(assert) {
- assert.pass("Unit test running!");
-};
-
-exports["test main async"] = function(assert, done) {
- assert.pass("async Unit test running!");
- done();
-};
-
-require("sdk/test").run(exports);