這是一個常見的用例場景:您想廣播一個公共WiFi網絡供任何人使用,但是您有嚴格的要求,只允許使用貓圖像。好消息:您的Raspberry Pi是完美的 transmoggification 機器。感興趣嗎?繼續閱讀。
您需要什么
Raspberry Pi模型B (Raspberry Pi的新功能?這是初學者需要了解的一切,都以視頻形式)
以太網電纜
兼容的WiFi適配器
理論
該項目的開始與幾周前我們建造的洋蔥路由器相同。首先,我們將Raspberry Pi變成標準的WiFi網絡,然后在中間放置一個代理。代理將通過Perlscript過濾帖子,它將用TheCatAPI.com的cat GIF替換每個HTTP請求上的圖像??粗Щ蟮挠脩艏葮O度沮喪,又異常鎮定。這是BBC,事后修改。
建立WiFi網絡
由于本教程的這一部分完全相同作為DIY OnionRouter,請按照此處的說明進行操作,直到安裝Tor 。
我們唯一需要做的小更改就是廣播一個開放的WiFi網絡而不是一個安全的WiFi網絡。使用WPA。完成此處的設置后,請更改/etc/hostapd/hostapd.conf ,并粘貼以下配置。重新開始應用更改。
interface=wlan0
driver=nl80211
ssid=Kittens
hw_mode=g
channel=6
auth_algs=1
wmm_enabled=0
您現在應該在Raspberry Pi上廣播一個可以公開訪問的無線網絡。本指南的其余部分將重點放在使有趣的事情發生上。
如果事情不起作用,請鍵入:
ifconfig -a
,然后查找wlan0上的IP地址。如果重新啟動時未分配,請嘗試以下操作:
sudo nano /etc/default/ifplugd
更改以下行:
INTERFACES=“auto”
HOTPLUG_INTERFACES=“all”
至:
INTERFACES=“eth0”
HOTPLUG_INTERFACES=“eth0”
重新啟動,并確認您能夠連接到WiFi網絡并訪問Internet。
Squid Proxy and IPTables
從安裝先決條件開始,然后創建一個新的路由表。稍后我們將從Raspberry Pi提供圖像,因此我們還將需要Apache Web服務器。
sudo apt-get install squid3 bridge-utils apache perl
nano iptables.sh
粘貼以下內容:
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -i wlan0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.42.1:3128
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
保存,然后退出。
chmod +x iptables.sh
sudo cp iptables.sh /etc/init.d/
sudo update-rc.d iptables.sh start 99
忽略警告,僅表示我們還沒有遵守某些Debian規則(但沒有破壞任何東西)。最后,我們仍然在引導時使用舊的 iptables 規則,因此從/etc/network/interfaces
up iptables-restore 《 /etc/iptables.ipv4.nat
(刪除或注釋掉)
然后重新啟動。接下來,我們將刪除默認的Squid代理配置,然后重新制作一個。
sudo rm /etc/squid3/squid.conf
sudo nano /etc/squid3/squid.conf
將以下內容粘貼到空白文件中:
cache_mgr pi
cachemgr_passwd pi all
redirect_program /home/pi/cats.pl
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 192.168.42.0/24 # RFC1918 possible internal network
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128 transparent
umask 022
cache_mem 128 MB
cache_dir ufs /var/spool/squid3 1500 16 256
coredump_dir /var/spool/squid3
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|?) 0 0% 0
refresh_pattern 。 0 20% 4320
保存并退出。使用以下命令初始化緩存目錄,然后編輯用于分類所有圖像的腳本:
sudo squid3 -z
nano /home/pi/cats.pl
粘貼:
#!/usr/bin/perl
$|=1;
$count = 0;
$pid = $$;
open (DEBUG, ‘》》/tmp/cats.log’);
autoflush DEBUG 1;
print DEBUG “######################################################################## ”;
while (《》) {
chomp $_;
if (m/nosquid/) {
print DEBUG “Input NOSQUID: $url ”;
print “$_ ”;
print DEBUG “Output NOSQUID: $_ ”;
}
elsif ($_ =~ /(.*.jpg)/i) {
$url = $1;
print DEBUG “Input: $url ”;
system(“/usr/bin/wget”, “-q”, “-O”,“/var/www/images/$pid-$count.gif”, “http://thecatapi.com/api/images/get?format=src&type=gif&nosquid”);
chmod 0777,“/var/www/images/$pid-$count.gif”;
print “http://127.0.0.1/images/$pid-$count.gif ”;
}
elsif ($_ =~ /(.*.gif)/i) {
$url = $1;
print DEBUG “Input: $url ”;
system(“/usr/bin/wget”, “-q”, “-O”,“/var/www/images/$pid-$count.gif”, “http://thecatapi.com/api/images/get?format=src&type=gif&nosquid”);
chmod 0777,“/var/www/images/$pid-$count.gif”;
print “http://127.0.0.1/images/$pid-$count.gif ”;
}
elsif ($_ =~ /(.*.png)/i) {
$url = $1;
print DEBUG “Input: $url ”;
system(“/usr/bin/wget”, “-q”, “-O”,“/var/www/images/$pid-$count.gif”, “http://thecatapi.com/api/images/get?format=src&type=gif&nosquid”);
chmod 0777,“/var/www/images/$pid-$count.gif”;
print “http://127.0.0.1/images/$pid-$count.gif ”;
}
elsif ($_ =~ /(.*.jpeg)/i) {
$url = $1;
print DEBUG “Input: $url ”;
system(“/usr/bin/wget”, “-q”, “-O”,“/var/www/images/$pid-$count.gif”, “http://thecatapi.com/api/images/get?format=src&type=gif&nosquid”);
chmod 0777,“/var/www/images/$pid-$count.gif”;
print “http://127.0.0.1/images/$pid-$count.gif ”;
}
else {
print “$_ ”;
}
$count++;
}
使腳本可執行,我們還希望為其創建一些目錄以供使用。
sudo chmod +x cats.pl
sudo mkdir /var/www/images
sudo chmod 777 /var/www/images
sudo usermod -a -G www-data proxy
sudo chown www-data:www-data /var/www
sudo chown www-data:www-data /var/www/images
touch /tmp/cats.log
chmod 777 /tmp/cats.log
您可以隨時使用以下內容尾注日志:
tail -f /tmp/cats.log
嘗試登錄Pinterest,然后突然發現所有這些愚蠢的DIY盆栽植物項目和男士時裝精選會更加吸引人。
如果您愿意倒置圖片(原始腳本為Ex-Parrot,我只修改為處理一些權限錯誤),創建 upsidedown.pl 并粘貼以下內容。
#!/usr/bin/perl
$|=1;
$count = 0;
$pid = $$;
while (《》) {
chomp $_;
if ($_ =~ /(.*.jpg)/i) {
$url = $1;
system(“/usr/bin/wget”, “-q”, “-O”,“/var/www/images/$pid-$count.jpg”, “$url”);
system(“/usr/bin/mogrify”, “-flip”,“/var/www/images/$pid-$count.jpg”);
chmod 0777,“/var/www/images/$pid-$count.jpg”;
print “http://127.0.0.1/images/$pid-$count.jpg ”;
}
elsif ($_ =~ /(.*.gif)/i) {
$url = $1;
system(“/usr/bin/wget”, “-q”, “-O”,“/var/www/images/$pid-$count.gif”, “$url”);
system(“/usr/bin/mogrify”, “-flip”,“/var/www/images/$pid-$count.gif”);
chmod 0777,“/var/www/images/$pid-$count.gif”;
print “http://127.0.0.1/images/$pid-$count.gif ”;
}
elsif ($_ =~ /(.*.png)/i) {
$url = $1;
system(“/usr/bin/wget”, “-q”, “-O”,“/var/www/images/$pid-$count.png”, “$url”);
system(“/usr/bin/mogrify”, “-flip”,“/var/www/images/$pid-$count.png”);
chmod 0777,“/var/www/images/$pid-$count.png”;
print “http://127.0.0.1/images/$pid-$count.png ”;
}
elsif ($_ =~ /(.*.jpeg)/i) {
$url = $1;
system(“/usr/bin/wget”, “-q”, “-O”,“/var/www/images/$pid-$count.jpeg”, “$url”);
system(“/usr/bin/mogrify”, “-flip”,“/var/www/images/$pid-$count.jpeg”);
chmod 0777,“/var/www/images/$pid-$count.jpeg”;
print “http://127.0.0.1/images/$pid-$count.jpeg ”;
}
else {
print “$_ ”;;
}
$count++;
}
按照上面的其他步驟,更改文件名,使腳本可執行,然后修改Squid配置,使其指向 upsidedown.pl 而不是 cats.pl 。最后,您需要使用以下命令重新啟動Squid:
sudo service squid3 restart
無論哪種情況,結果都很棒。如果您對這些腳本進行了其他修改或改進,使其具有其他功能,請在評論中讓我輸入,并在您的腳本中添加一個Pastebin鏈接。
責任編輯:wv
-
WIFI
+關注
關注
81文章
5380瀏覽量
207580 -
樹莓派
+關注
關注
121文章
1957瀏覽量
107050
發布評論請先 登錄
樹莓派“吉尼斯世界記錄”:將樹莓派的性能發揮到極致的項目!

評論