2013-05-22 58 views
0

編輯:克朗是好的,我忘記了打開RewriteEngine On,這裏留下這個以防其他人想要做同樣的事情,因爲我找不到指南任何地方。使用htaccess重定向tor出口節點IP列表到一個頁面

自從我使用Apache以來,這已經有一段時間了,所以這可能只是一個語法問題。我試圖將所有tor用戶重定向到我的域(/tor.php)上的特定頁面,以通知他們我們正在運行hidden service,他們需要通過隱藏服務訪問該網站。

由於隱藏的服務將顯示%{REMOTE_ADDR}爲127.0.0.1,我想我可以只搶TOR IP列表每天一次上一個cron,在sed用它玩,並追加到我的.htaccess。這是我想出迄今:

#!/bin/bash 
# 
# Cron job to get a list of TOR IP addresses and redirect to tor.php 

sed -in '/#\ TOR-REDIRECT-BLOCK/,/#\ END-TOR-REDIRECT-BLOCK/d' /path/to/www/.htaccess 
wget -q https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=my.server.ip.address -O - | sed '/^\#/d' | sed "s/^/RewriteCond %{REMOTE_ADDR} ^/g; s/\./\\\./g; s/$/\$ \[OR\] /g; 1i# TOR-REDIRECT-BLOCK" >> /path/to/www/.htaccess 
echo "RewriteCond %{REMOTE_ADDR} ^0\.0\.0\.0$" >> /path/to/www/.htaccess 
echo "RewriteCond %{REQUEST_URI} !^/tor.php$" >> /path/to/www/.htaccess 
echo "RewriteCond %{REQUEST_URI} !^/tor.css$" >> /path/to/www/.htaccess 
echo "RewriteRule ^(.*)$ /tor.php [R,L]" >> /path/to/www/.htaccess 
echo "# END-TOR-REDIRECT-BLOCK" >> /path/to/www/.htaccess 

這消除# TOR-REDIRECT-BLOCK# END-TOR-REDIRECT-BLOCK之間包裹的舊塊,並增加了基於IP列表上一個新的,看起來是這樣的:

# TOR-REDIRECT-BLOCK 
RewriteCond %{REMOTE_ADDR} ^103\.4\.16\.118$ [OR] 
RewriteCond %{REMOTE_ADDR} ^106\.187\.36\.183$ [OR] 
RewriteCond %{REMOTE_ADDR} ^106\.187\.36\.240$ [OR] 
RewriteCond %{REMOTE_ADDR} ^106\.187\.37\.158$ [OR] 
... 
RewriteCond %{REMOTE_ADDR} ^99\.230\.106\.155$ [OR] 
RewriteCond %{REMOTE_ADDR} ^0\.0\.0\.0$ 
RewriteCond %{REQUEST_URI} !^/tor.php$ 
RewriteCond %{REQUEST_URI} !^/tor.css$ 
RewriteRule ^(.*)$ /tor.php [R,L] 
# END-TOR-REDIRECT-BLOCK 

之後,我加載Tor瀏覽器,並嘗試導航到http://mydomain/phpinfo.php(這是Apache密碼保護,所以這個文件沒有公開)。它加載phpinfo.php而不是將我重定向到tor.phpphpinfo.php中的REMOTE_ADDR位於.htaccess文件中的IP地址列表中,該文件應該被重定向。

我有mod_rewrite啓用,所以這不是問題。 0.0.0.0規則是因爲我的sed -foo不夠好,不能記住如何將[OR]附加到除最後一行之外的所有行。任何幫助深表感謝。

回答

0

克朗很好,我忘記了打開RewriteEngine On,如果有其他人想要做同樣的事情,我無法在任何地方找到指南。

相關問題