可否考慮提供離線閱讀網頁內容的壓縮檔?這樣可以減少一些線上閱讀的流量與loading ?
有人要抓網頁內容離線閱讀的話也比較不會像現在這樣造成大家的不便
若是事先來信問我要,我會用 tar 包好,然後請對方來 download 。
但,要是不管三七二十一就來砍站,真不是很喜歡。
之前 loading 不重還好,但自從將 phorum 搬過來自後,
就實在吃不消....
想看今天慘況嗎:
為此,我寫了一個 script 來擋,
有需要的朋友可參考:
#!/bin/bash
HTTP_LIST=/root/http.list
HTTP_LIST_TMP=/root/http.list.tmp
CONN_NU=24
for i in $(cat $HTTP_LIST); do
/sbin/iptables -D INPUT -p TCP --dport 80 -s $i -j DROP 2>/dev/null
done
cat /dev/null > $HTTP_LIST
# block http
netstat -na | grep ':80' | awk '{print $5}' | cut -d: -f1 \
| sort | sed '/0.0.0.0/d' > $HTTP_LIST_TMP
for i in $(cat $HTTP_LIST_TMP | uniq); do
if [ $(cat $HTTP_LIST_TMP | grep $i | wc -l) -gt $CONN_NU ]; then
echo $i >> $HTTP_LIST
fi
done
for i in $(cat $HTTP_LIST); do
/sbin/iptables -I INPUT -p TCP --dport 80 -s $i -j DROP
done
然後,我寫個 crontab ,讓它每兩分鍾跑一次。
這樣,我也不必再管它是否每一小時清舊規則了(與前面公佈的規則有所改良):
要修改連線的限制數目,就修改 CONN_NU 變數,
若是偶發性的超過限制,只要不在 script running 被抓到,那是 okay 的,
就算被誤抓,最多兩分鍾就可解除(用 -D 從舊 list 中移除)。
但若是砍站,應該會為持好一陣子的 high rate connection ,
那就每次 script running 都會被擋...
若想調整 running 時間間隔,那就改 crontab 就好。
若大家有更好的設計,歡迎分享。