From c0c01001e3089b031c52fd4ccfd41a13c1db5f4e Mon Sep 17 00:00:00 2001 From: Yuval Adam <_@yuv.al> Date: Fri, 6 Jul 2018 10:56:29 +0300 Subject: Travis WIP --- package.json | 2 +- src/free_haaretz.css | 6 ++++++ src/free_haaretz.js | 46 ++++++++++++++++++++++++++++++++++++++++++ src/manifest.json | 22 ++++++++++++++++++++ test/free_haaretz.js | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ test/test.js | 49 -------------------------------------------- 6 files changed, 132 insertions(+), 50 deletions(-) create mode 100644 src/free_haaretz.css create mode 100644 src/free_haaretz.js create mode 100644 src/manifest.json create mode 100644 test/free_haaretz.js delete mode 100644 test/test.js diff --git a/package.json b/package.json index e742eba..aef9240 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "mocha": "^3.4.2" }, "scripts": { - "test": "LIGHTHOUSE_CHROMIUM_PATH=/usr/bin/chromium mocha" + "test": "LIGHTHOUSE_CHROMIUM_PATH=/usr/bin/chromium mocha --no-timeouts" }, "repository": { "type": "git", diff --git a/src/free_haaretz.css b/src/free_haaretz.css new file mode 100644 index 0000000..2329aa5 --- /dev/null +++ b/src/free_haaretz.css @@ -0,0 +1,6 @@ +section#header-reading-list { + display: none; +} +section#header-user-menu { + display: none; +} \ No newline at end of file diff --git a/src/free_haaretz.js b/src/free_haaretz.js new file mode 100644 index 0000000..48575df --- /dev/null +++ b/src/free_haaretz.js @@ -0,0 +1,46 @@ +chrome.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', + ] +); + +chrome.webRequest.onBeforeSendHeaders.addListener( + function (details) { + for (var i = 0; i < details.requestHeaders.length; ++i) { + if (details.requestHeaders[i].name.toLowerCase() === 'user-agent') { + details.requestHeaders[i].value = 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)'; + break; + } + } + + return { + requestHeaders: details.requestHeaders + }; + }, + { + urls: [ + 'http://*.haaretz.co.il/*', + 'http://*.haaretz.com/*', + ] + }, + [ + 'blocking', + 'requestHeaders' + ] +); + + diff --git a/src/manifest.json b/src/manifest.json new file mode 100644 index 0000000..ce05e38 --- /dev/null +++ b/src/manifest.json @@ -0,0 +1,22 @@ +{ + "name": "Free Haaretz", + "version": "0.9.3", + "manifest_version": 2, + "description": "A nefarious extension that easily bypasses the Haaretz paywall", + "homepage_url": "http://github.com/yuvadm/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/test/free_haaretz.js b/test/free_haaretz.js new file mode 100644 index 0000000..e1277c2 --- /dev/null +++ b/test/free_haaretz.js @@ -0,0 +1,57 @@ +const assert = require('chai').assert; +const chromeLauncher = require('chrome-launcher'); +const CDP = require('chrome-remote-interface'); + +function launchChrome() { + return chromeLauncher.launch({ + port: 9222, + chromeFlags: [ + '--headless', + '--disable-gpu', + //'--load-extension=src', + '--no-sandbox' + ] + }) +} + +describe('test', () => { + describe('thisistest', () => { + it('should show chrome', (done) => { + launchChrome().then(chrome => { + CDP((client) => { + const {Network, Page, Runtime} = client; + + Promise.all([ + Network.enable(), + Page.enable() + ]).then(() => { + return Page.navigate({url: 'https://www.haaretz.co.il/news/world/america/.premium-1.4239672'}) + //return Page.navigate({url: 'http://www.example.com'}) + }).catch((err) => { + client.close(); + chrome.kill(); + done(err); + }) + + Page.loadEventFired(() => { + Runtime.evaluate({expression: 'document.body.outerHTML'}).then((result) => { + assert.include(result.result.value, 'coordination'); + //assert.equal(1,1); + client.close(); + chrome.kill(); + done(); + }).catch((err) => { + client.close(); + chrome.kill(); + done(err); + }) + }) + + }) + }).catch(err => { + chrome.kill() + done(err) + }) + }); + }); +}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 051cf9f..0000000 --- a/test/test.js +++ /dev/null @@ -1,49 +0,0 @@ -const assert = require('chai').assert; -const chromeLauncher = require('chrome-launcher'); -const CDP = require('chrome-remote-interface'); - -function launchChrome() { - return chromeLauncher.launch({ - port: 9222, - chromeFlags: [ - '--headless', - '--disable-gpu', - '--no-sandbox' - ] - }) -} - -describe('test', () => { - describe('thisistest', () => { - it('should show chrome', (done) => { - launchChrome().then(chrome => { - CDP((client) => { - const {Network, Page, Runtime} = client; - - Promise.all([ - Network.enable(), - Page.enable() - ]).then(() => { - return Page.navigate({url: 'https://www.example.com'}) - }).catch((err) => { - done(err); - }) - - Page.loadEventFired(() => { - Runtime.evaluate({expression: 'document.body.outerHTML'}).then((result) => { - assert.include(result.result.value, 'coordination'); - client.close(); - chrome.kill(); - done(); - }).catch((err) => { - done(err); - }) - }) - - }) - }).catch(err => { - done(err) - }) - }); - }); -}); -- cgit v1.3.1