adblock2privoxy: Convert adblock config files to privoxy format

[ gpl, program, web ] [ Propose Tags ]
AdBlock Plus
browser plugin has great block list files provided by big community, but it is client software and cannot work on a server as proxy.
Privoxy
proxy has good potential to block ads at server side, but it experiences acute shortage of updated block lists.

This software converts adblock lists to privoxy config files format.

Almost all adblock features are supported including

all syntax features are supported except for regex templates matching host name

all syntax features are supported

Supported: script, image, stylesheet, object, xmlhttprequest, object-subrequest, subdocument, document, elemhide, other, popup, third-party, domain=..., match-case, donottrack

Unsupported: collapse, background, xbl, ping and dtd


[Skip to Readme]
Versions [faq] 1.0.0, 1.1.0, 1.2.0, 1.2.1, 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.4.0, 1.4.1, 1.4.2, 2.0.0
Change log changelog
Dependencies base (==4.*), containers, directory, filepath, http-conduit, MissingH, mtl, network (>=2.4.2 && <2.5), old-locale (>=1.0.0 && <1.1), parsec, parsec-permutation, strict (>=0.3.2 && <0.4), text (>=0.11.3 && <0.12), time (>=1.4.0 && <1.5) [details]
License GPL-3.0-only
Author Alexey Zubritsky
Maintainer Alexey Zubritsky
Category Web
Home page https://projects.zubr.me/wiki/adblock2privoxy
Source repo this: git clone ​http://projects.zubr.me/adblock2privoxy.git(tag 1.2.2)
Uploaded by zubr at Fri Apr 11 19:36:54 UTC 2014
Distributions NixOS:2.0.0
Executables adblock2privoxy
Downloads 7581 total (41 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
All reported builds failed as of 2016-12-15 [all 8 reports]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for adblock2privoxy-1.2.2

[back to package description]
= Adblock2Privoxy =

''Convert adblock config files to privoxy format''

== Introduction ==
!AdBlock Plus browser plugin has great block lists provided by big community,
but it is client software and cannot work on a server as a proxy.

Privoxy proxy has good potential to block ads at server side, 
but it experiences acute shortage of updated block lists.

This software converts adblock lists to privoxy config files format.   

Almost all adblock features are supported including
* block/unblock requests (on privoxy)
  * all syntax features are supported except for regex templates matching host name
* hide/unhide page elements (via CSS)
  * all syntax features are supported
* all block request options except for outdated ones:
  * Supported: script, image, stylesheet, object, xmlhttprequest, object-subrequest, subdocument,document, elemhide, other, popup, third-party, domain=..., match-case, donottrack
  * Unsupported: collapse, background, xbl, ping and dtd
  
Tested with privoxy version 3.0.21.
Element blocking feature requires a webserver to serve CSS files. See Nginx and Apache config examples provided.

== Usage ==
{{{
adblock2privoxy [OPTION...] [URL...]
  -v       --version          show version number
  -p PATH  --privoxyDir=PATH  privoxy config output path (required)
  -w PATH  --webDir=PATH      css files output path (optional, privoxyDir is used by default)
  -t PATH  --taskFile=PATH    path to task file containing urls to process
  -f       --forced           run even if no sources are expired
}}}  
Example of first run: {{{ adblock2privoxy -p /etc/privoxy -w /var/www/privoxy -t my_ab2b.task https://easylist-downloads.adblockplus.org/easylist.txt https://easylist-downloads.adblockplus.org/advblock.txt my_custom.txt }}}

Example of subsequent runs: {{{ adblock2privoxy -p /etc/privoxy -w /var/www/privoxy -t my_ab2b.task }}}

The app generates following files
	* privoxyDir: 
		* ab2p.system.action
		* ab2p.action
		* ab2p.system.filter
		* ab2p.filter
	* webDir: 
		* ab2p.common.css
		* ab2p.css
		* [lot of directories for first level domain names] 
	* taskFile:
	        * special file containing execution details. It can be reused to update privoxy config from same sources. 

== How to apply results ==

1) Install privoxy. Optionally setup it as transparent proxy

2) Change privoxy config file: Add following lines
{{{
actionsfile ab2p.system.action
actionsfile ab2p.action
filterfile ab2p.system.filter
filterfile ab2p.filter
}}}
3) Install nginx or apache webserver

Nginx config example:
{{{	
server {
        listen 80;
        #ab2p css domain name (optional)
        server_name privoxy.zubr.me;

        #root = webDir parameter value 
        root /var/www/privoxy; 

        location ~ ^/[^/.]+\..+/ab2p.css$ {
          	# first reverse domain names order
			rewrite ^/([^/]*?)\.([^/.]+)(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?/ab2p.css$ /$9/$8/$7/$6/$5/$4/$3/$2/$1/ab2p.css last;
        }

        location ~ (^.*/+)[^/]+/+ab2p.css {
          	# then try to get CSS for current domain
          	# if it is unavailable - get CSS for parent domain
          	try_files $uri $1ab2p.css;
        } 
}
}}}

Apache config example:
{{{
<VirtualHost *:80>
        #ab2p css domain name (optional)
        ServerName www.example.com 

        #root = webDir parameter value 
        DocumentRoot /var/www/privoxy


        RewriteEngine on

        # first reverse domain names order
        RewriteRule ^/([^/]*?)\.([^/.]+)(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?(?:\.([^/.]+))?/ab2p.css$ /$9/$8/$7/$6/$5/$4/$3/$2/$1/ab2p.css [N]

        # then try to get CSS for current domain
        # if it is unavailable - get CSS for parent domain
        RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
        RewriteRule (^.*/+)[^/]+/+ab2p.css$ $1ab2p.css [N]
</VirtualHost>
}}}
4) Find out files to use. Some download locations
* !EasyList: https://easylist.adblockplus.org/en/
* Russian AD list: https://code.google.com/p/ruadlist/

5) Run adblock2privoxy providing privoxy dir, web dir and adblock input file urls

6) Restart privoxy and apache to load updated configs

Clone repository from ​http://projects.zubr.me/adblock2privoxy.git