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
合計:オペラの非常に迅速で、簡単にカスタマイズでき、定期的に更新され、最も重要なのは、正しくて論理的に機能する広告主です。 まあ、それは美しさではないですか?
さて、最後の仕上げとして、試用のためにスクリーンショットをいくつか提供します。
プロキシの前:
後: