Privoxy +オペラは広告を取り除きます

写真を含めて無制限に取得した後(はい、地方の学生の小さな喜び)、広告カッターを選択するという疑問が生じました。 ここに少し余談があります:私は広告が嫌いです。 いいえ、インターネット上の誰もが広告を嫌っていますが、少なくとも3つの理由があります。

1)明るく、カラフルで、しばしばサーフィンを妨げる

2)私の古いコンプマシンはカラフルなフラッシュドライブで苦労しています。 父のコンピューターなど。

3)裸のロバが飛び跳ねているのを見るなど、母親に流し台で本を見せることは痛々しく不快です。

私と父はどちらもオペラを使用していましたが、何も変更するつもりはなかったため、パイプカッターを選択する問題は非常に深刻でした。 何らかの理由で、私はオペラでブロックCSSを使用したくありませんでしたが、今はしたくありません。 短いグーグルの後、私の選択はプライベートにかかった。 これは、プロキシサーバーとしてルーターの側面で動作する強力な広告カッターです(私の場合、スラック、コンピューター、および父親にホームlokalkaルーターがあるため)。 広告をフィルタリングするこのアプローチは、プロキシを登録するのが簡単で、プロキシを無効にしたい場合などに適していました。

この記事では、skackware 13でホームサーバーにprivoxyをインストールして構成する手順を説明します。

最初に、ユーザーとprivoxyグループを作成する必要がありました。 お好みの作成方法はお任せします。

src2pkgを使用してプログラムをインストールすることにしました 。 そして、それはいくつかのジェスチャーなしではできないことが判明しました。

インストール例は次のようになります。

mkdir /tmp/privoxy

cd /tmp/privoxy

wget 'http://heanet.dl.sourceforge.net/project/ijbswa/Sources/3.0.16%20(stable)/privoxy-3.0.16-stable-src.tar.gz'






次に、同じフォルダーに2つのスクリプトを作成します。

privoxy.src2pkg:

#!/bin/bash

## src2pkg script for: privoxy

## Auto-generated by src2pkg-2.2

## src2pkg - Copyright 2005-2009 Gilbert Ashley <amigo@ibilio.org>



SOURCE_NAME='privoxy-3.0.16-stable-src.tar.gz'

NAME='privoxy' # Use ALT_NAME to override guessed value

VERSION='3.0.16' # Use ALT_VERSION to override guessed value

# ARCH=''

# BUILD='1'

# PRE_FIX='usr'



# from the privoxy.SlackBuild:

PRIVOXY_USER=${PRIVOXY_USER:-privoxy}

PRIVOXY_GROUP=${PRIVOXY_GROUP:-privoxy}

if ! grep -q ^$PRIVOXY_GROUP: /etc/group 2>/dev/null ; then

echo " Error: PRIVOXY group ($PRIVOXY_GROUP) doesn't exist."

echo " Try creating one with: groupadd -g 206 $PRIVOXY_GROUP"

exit 1

fi

if ! grep -q ^$PRIVOXY_USER: /etc/passwd 2>/dev/null ; then

echo " Error: PRIVOXY user ($PRIVOXY_USER) doesn't exist."

echo " Try creating one with: useradd -u 206 -g $PRIVOXY_GROUP -d /dev/null -s /bin/false $PRIVOXY_USER"

exit 1

fi



# Any extra options go here:

EXTRA_CONFIGS="--sysconfdir=/etc/$NAME \

--localstatedir=/var \

--docdir=$docdir/$NAME-$VERSION \

--with-docbook=no \

--with-user=$PRIVOXY_USER \

--with-group=$PRIVOXY_GROUP"



# Optional function replaces configure_source, compile_source, fake_install

# To use, uncomment and write/paste CODE between the {} brackets.

# build() { CODE }



# Get the functions and configs

. /usr/libexec/src2pkg/FUNCTIONS ;



# Execute the named packaging steps:

pre_process

find_source

make_dirs

unpack_source

fix_source_perms



#cd $SRC_DIR

#autoheader

#autoconf



configure_source #

compile_source # If used, the 'build' function replaces these 3

fake_install #



mkdir -p $PKG_DIR/etc/$NAME/templates

cp $SRC_DIR/templates/* $PKG_DIR/etc/$NAME/templates



#Adapted from the privoxy.SlackBuild:

rm -rf $PKG_DIR/etc/rc.d

mkdir -p $PKG_DIR/etc/rc.d

cat $SRC_DIR/slackware/rc.privoxy.orig > $PKG/etc/rc.d/rc.$NAME.new

sed -i " s/%PROGRAM%/$NAME/

s,%SBIN_DEST%,/usr/bin,

s,%CONF_DEST%,/etc/$NAME,

s/%USER%/$NAME/

s/%GROUP%/$NAME/

" $PKG_DIR/etc/rc.d/rc.$NAME.new



# Fix Path within the configuration files (thanks to h4kteur)

sed -i "s#$PKG_DIR##g" $PKG_DIR/etc/$NAME/config

# Fix Path with the config file to point to right usermanual (thanks to BP{k})

sed -i \

"s#user-manual /usr/doc/$NAME#user-manual /$docdir/$NAME-$VERSION#" \

$PKG_DIR/etc/privoxy/config



# Make .new files so we dont clobber existing configuration

find $PKG_DIR/etc/privoxy -type f -exec mv {} {}.new \;

# Don't clobber the logfile either

mv $PKG_DIR/var/log/privoxy/logfile $PKG_DIR/var/log/privoxy/logfile.new

# Remove this directory since it's empty and part of Slackware base

rmdir $PKG_DIR/var/run &> /dev/null



fix_pkg_perms

strip_bins

create_docs

compress_man_pages

make_description

make_doinst

make_package

post_process








doinst.prepend:

# Keep same perms on rc.privoxy.new:

if [ -e etc/rc.d/rc.privoxy ]; then

cp -a etc/rc.d/rc.privoxy etc/rc.d/rc.privoxy.new.incoming

cat etc/rc.d/rc.privoxy.new > etc/rc.d/rc.privoxy.new.incoming

mv etc/rc.d/rc.privoxy.new.incoming etc/rc.d/rc.privoxy.new

fi



# If there's no existing log file, move this one over;

# otherwise, kill the new one

if [ ! -e var/log/privoxy/logfile ]; then

mv var/log/privoxy/logfile.new var/log/privoxy/logfile

else

rm -f var/log/privoxy/logfile.new

fi



if ! grep -q ^privoxy: /etc/group 2>/dev/null ; then

echo " Error: PRIVOXY group 'privoxy' doesn't exist."

echo " Creating one with: groupadd -g 206 privoxy"

groupadd -g 206 @PRIVOXY_GROU@

fi



if ! grep -q ^privoxy: /etc/passwd 2>/dev/null ; then

echo " Error: PRIVOXY user 'privoxy' doesn't exist."

echo " Try creating one with: useradd -u 206 -g privoxy -d /dev/null -s /bin/false privoxy"

exit 1

fi



if ! [ -x etc/rc.d/rc.privoxy ]; then

echo " etc/rc.d/rc.privoxy must be set executable to enable privoxy at boot-time:"

echo " chmod 755 /etc/rc.d/rc.privoxy"

fi







開発者src2pkg Gilbert Ashleyにスクリプトに感謝します。

実行する権利を設定します。 その後、パッケージを収集し、privoxyチームを配置します

src2pkg -X -C -I

プログラムは正常にインストールされました。 最小限の設定変更が必要でした:

1. listen-address 127.0.0.1:8118をコメントアウトしました

2. listen-address 192.168.0.1:8118

3.許可アクセス192.168.0.0/24

次に、ファイル/etc/rc.d/rc.privoxyを変更する必要があります



PRIVOXY_USER="privoxy"

PRIVOXY_GROUP="privoxy"








これで、privoxyを初めて実行できます。

root@ironnet:/tmp/privoxy# /etc/rc.d/rc.privoxy start

Starting privoxy: OK








プロキシブラウザ192.168.0.1:8118に登録するだけです



残念ながら、しばらくしてから、組み込みフィルターはフィルタリングに対応していないことが判明しました。 短いグーグルの後、ここからPythonスクリプトが借用され、海兵隊からのブロックリストに基づいてルールを自動的に生成しました。

解析用に別のブロックリストを追加して、少し変更しました。 だから、これが判明した:

#!/usr/bin/perl



# Updated: 2010/03/17 12:58:26



###############################################################################

# adblock2privoxy.pl

###############################################################################

# Copyright 2010 Arcady N. Shpak (Greignar) arsengine.org.ru

#

# This program is free software; you can redistribute it and/or modify

# it under the terms of the GNU General Public License as published by

# the Free Software Foundation; either version 2 of the License, or

# (at your option) any later version.

#

# This program is distributed in the hope that it will be useful,

# but WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

# GNU General Public License for more details.

#

# You should have received a copy of the GNU General Public License

# along with this program; if not, write to the Free Software

# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,

# MA 02110-1301, USA.

################################################################################



# codepage utf8



use strict;



# ( '/')

my $cfg = '/etc/privoxy';

# ( '/')

my $tmp = '/tmp';



my $file = '/adblock.tmp';



&WriteFile(">$cfg/adblock.action", '');



#

&process('http://ruadlist.googlecode.com/svn/trunk/adblock.txt', 'ru-adlist-list');

&process('http://ruadlist.googlecode.com/svn/trunk/antinuha.txt', 'ru-adult-list');

&process('http://ruadlist.googlecode.com/svn/trunk/adblockeh.txt', 'ru-adult-list');

# , :

# &process(' ', ' - ');



exit;



sub process

{

my ($url, $name) = @_;

my (@adblock, @white, @black);

&WriteFile(">$tmp$file", '');

system("wget $url -O $tmp$file");

return unless(-e "$tmp$file" );

@adblock = &ReadFile("<$tmp$file");

foreach(@adblock) {

#

$_ = &clean($_);

#

next if($_ =~ /^$/);

#

next if($_ =~ s/^[\[\!]+.*//);

#

next if($_ =~ s/\#.*//);

#

next if($_ =~ s/\$.+//);

# ,

next if($_ =~ s/^.*[\[\(\\]+.*//);

#

if($_ =~ /^\@.*/) { unshift(@white, &mask($_)); next; }

#

if($_ =~ /^(\*|\||).*/) { unshift(@black, &mask($_)); next; }

}

@black = sort(@black);

@white = sort(@white);

#

&WriteFile(">>$cfg/adblock.action", "{+block{$name}}\n@black\n");

&WriteFile(">>$cfg/adblock.action", "{-block}\n@white\n");

#

system("chmod a+rw $cfg/adblock.action");

}



sub mask

{

my $url = shift;

my($host, $path);

# URL

$url =~ s/^[\@\|\.]+//g;

$url =~ s/^.*?:\/\/+//g;

$url =~ s/\$.*$//g;

$url =~ s/[|]+$//g;

$url =~ s/\*$//g;

$url =~ s/\^/\//g;

$url =~ s/^\*/\/*/;

$url =~ s/^([-_]+)/\/*$1/;

$url =~ s/\/+/\//;

#

$url =~ s/(\/.*)$//; $path = $1;

$url =~ s/^([^\/]*)//; $host = $1;

# www

$host =~ s/^www\.//ig;

# ( )

if($path =~ /[\*\?]/) {

$path =~ s/([\\\?\&\.\,])/\\\1/g;

$path =~ s/\*/.*/g;

}

#

$host = '.' . $host if($host ne '');

return "$host$path\n";

}



sub clean()

{

my ($str) = @_;

chomp $str;

#

$str =~ s/^\s+|\s+$//g;

$str =~ s/[\r\n]+//g;

return $str;

}



sub ReadFile

{

my($file, @body);

$file = $_[0];

open(local *F, $file) || die("Can't open data-file $file\n",$!);

binmode F;

@body = ;

close(F);

return @body;

}



sub WriteFile

{

my($file, $body, $mode, $access);

$file = $_[0];

$body = $_[1];

open(local *F, $file) || die("Can't create data-file $file\n",$!);

binmode F;

flock(F, 2);

print F $body;

close(F);

return 1;

}



1;









この奇跡を/ etc / privoxyディレクトリにadblock2privoxy.plという名前で保存し、実行権を付与します。 このスクリプトのreadmeからの抜粋:



adblock2privoxy.pl Perl AdBlock Privoxy.



(Linux):



1. .

2. ($cfg, $tmp)

3. .

4. Privoxy "actionsfile":

: actionsfile user.action

: actionsfile adblock.action

5. ( sudo) cron'

6. Privoxy








私たちがすること。



さて、完全な幸福のために、冠に追加してください:



40 4 * * * /etc/privoxy/adblock2privoxy.pl

42 4 * * * /etc/rc.d/rc.privoxy restart








合計:オペラの非常に迅速で、簡単にカスタマイズでき、定期的に更新され、最も重要なのは、正しくて論理的に機能する広告主です。 まあ、それは美しさではないですか?



さて、最後の仕上げとして、試用のためにスクリーンショットをいくつか提供します。

プロキシの前:



後:








All Articles