防止網(wǎng)站被爬蟲(chóng)爬取的幾種解決辦法
優(yōu)采云 發(fā)布時(shí)間: 2020-06-02 08:00#! /bin/bash
LOGFILE=/var/log/nginx/access.log
PREFIX=/etc/spiders
#日志中大部分蜘蛛都有spider的關(guān)鍵字,但是百度的不能封,所以過(guò)濾掉百度
grep 'spider' $LOGFILE |grep -v 'Baidu' |awk '{print $1}' >$PREFIX/ip1.txt
# 封掉網(wǎng)易的有道
grep 'YoudaoBot' $LOGFILE | awk '{print $1}' >>$PREFIX/ip1.txt
#封掉雅虎
grep 'Yahoo!' $LOGFILE | awk '{print $1}' >>$PREFIX/ip1.txt
# 過(guò)濾掉信任IP
sort -n $PREFIX/ip1.txt |uniq |sort |grep -v '192.168.0.' |grep -v '127.0.0.1'>$PREFIX/ip2.txt
# 如果一小時(shí)內,發(fā)包不超過(guò)30個(gè)就要解封
/sbin/iptables -nvL |awk '$1 <= 30 {print $8}' >$PREFIX/ip3.txt
for ip in `cat $PREFIX/ip3.txt`; do /sbin/iptables -D INPUT -s $ip -j DROP ; done
/sbin/iptables -Z // 將iptables計數器置為0
for ip in `cat $PREFIX/ip2.txt`; do /sbin/iptables -I INPUT -s $ip -j DROP ; done
3.使用robots.txt文件:例如阻止所有的爬蟲(chóng)爬取,但是這種效果不是很明顯。
User-agent: *
Disallow: /
4.使用nginx的自帶功能:通過(guò)對httpuseragent阻塞來(lái)實(shí)現,包括GET/POST方式的請求,以nginx為例,具體步驟如下:
編輯nginx.conf
#vim /usr/local/nginx/conf/nginx.conf
拒絕以wget方式的httpuseragent,增加如下內容
## Block http user agent - wget ##
if ($http_user_agent ~* (Wget) ) {
return 403;
}
## Block Software download user agents ##
if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
return 403;
}
平滑啟動(dòng)
# /usr/local/nginx/sbin/nginx -s reload
如何拒絕多種httpuseragent,內容如下:
if ($http_user_agent ~ (agent1|agent2|Foo|Wget|Catall Spider|AcoiRobot) ) {
return 403;
}
大小寫(xiě)敏感匹配
### 大小寫(xiě)敏感http user agent拒絕###
if ($http_user_agent ~ (Catall Spider|AcoiRobot) ) {
return 403;
}
### 大小寫(xiě)不敏感http user agent拒絕###
if ($http_user_agent ~* (foo|bar) ) {
return 403;
}
以上是腳本之家(jb51.cc)為你搜集整理的全部代碼內容,希望文章能夠幫你解決所遇見(jiàn)的程序開(kāi)發(fā)問(wèn)題。
如果認為腳本之家網(wǎng)站內容還不錯網(wǎng)頁(yè)如何防止爬蟲(chóng),歡迎將腳本之家網(wǎng)站推薦給程序員好友。
以上是腳本之家為你搜集整理的避免網(wǎng)站被爬蟲(chóng)爬取的幾種解決辦法全部?jì)热?,希望文章能夠幫你解決避免網(wǎng)站被爬蟲(chóng)爬取的幾種解決辦法所遇見(jiàn)的程序開(kāi)發(fā)問(wèn)題。
如果認為腳本之家網(wǎng)站內容還不錯網(wǎng)頁(yè)如何防止爬蟲(chóng),歡迎將腳本之家網(wǎng)站推薦給程序員好友。