2019独角兽企业重金招聘Python工程师标准>>>

一个简单通过nginx日志封ip规则(仅仅自己方便使用)

#!/bin/bash
#Version:1.0
#Date:2016-08-09
#作用:防刷IP地址,解封蜘蛛,解封5天前封的IP地址function deny ()
{
Date=$(date +"%F-%H-%M")
Date2=$(date +%s)
#awk '{a[$1]++};END {for(i in a) print i,a[i]}' /usr/local/nginx/logs/access.log|sort -rnk 2 | head -n 15 >/home/scripts/denyip.txt
grep -v -i 'ajax' /usr/local/nginx/logs/access.log | awk '{a[$1]++};END {for(i in a) print i,a[i]}' | sort -rnk 2 | head -n 15 >/home/scripts/denyip.txt
DEFINE="5000"
while read IP NUM
doif [ $NUM -gt $DEFINE ];thengrep -w "$IP" /home/scripts/white_list.txt > /dev/nullif [ $? != 0 ];thengrep -w "$IP" /home/scripts/black_list.txt > /dev/nullif [ $? != 0 ];then/sbin/iptables -A INPUT -p tcp --dport 80 -s $IP -j DROPecho "$Date2 $Date kill $IP" >> /home/scripts/black_list.txtfififi
done</home/scripts/denyip.txt
}function minute ()
{
Date=`date +"%H:%M:%S"`
Date2=`date +"%H:%M:%S" -d "$(date -d '-1minute')"`
Date3=$(date +%s)
Date4=$(date +"%F-%H-%M")
#awk '{a[$1]++};END {for(i in a) print i,a[i]}' /usr/local/data/nginx/logs/access.log|sort -rnk 2 | head -n 15 >>/home/scripts/denyip.txt
sed -n "/$Date2/,/$Date/p" /usr/local/data/nginx/logs/access.log | grep -v 'jQuery' | awk '{a[$1]++};END {for(i in a) print i,a[i]}' |sort -rnk 2 |head -n 15 >/home/scripts/minuteip.txtDEFINE="60"
while read IP NUM
doif [ $NUM -gt $DEFINE ];thengrep -w "$IP" /home/scripts/white_list.txt > /dev/nullif [ $? != 0 ];thengrep -w "$IP" /home/scripts/black_list.txt > /dev/null || grep -w "$IP" /home/scripts/minute_black_list.txt > /dev/nullif [ $? != 0 ];then/sbin/iptables -A INPUT -p tcp --dport 80 -s $IP -j DROPecho "$Date3 $Date4 kill $IP" >> /home/scripts/minute_black_list.txtfififi
done</home/scripts/minuteip.txt
}function unlock ()
{
UNLOCK_DAY=`date +%s -d '-5 days'`
while read A B C D
doif [ $A -lt $UNLOCK_DAY ]then                                         sed -n "/$D/p" /home/scripts/black_list.txt >> /home/scripts/black_list_long_time.txt/sbin/iptables -D INPUT -p tcp --dport 80 -s $D -j DROPsed -i "/$D/d" /home/scripts/black_list.txtfi
done</home/scripts/black_list.txt
}function spider ()
{
#/sbin/service iptables status > /home/scripts/iptables_list.txt
#sleep 5
#IP_LIST=`grep "DROP" /home/scripts/iptables_list.txt | awk '{print $5}'`
IP_LIST=`awk '{print $NF}' /home/scripts/black_list.txt`
for i in $IP_LIST
donslookup $i | grep -E "msn|googlebot|baiduspider|yahoo"if [ `echo $?` -eq 0 ]thenecho $i >> /home/scripts/white_list.txt/sbin/iptables -D INPUT -p tcp --dport 80 -s $i -j DROPsed -i "/$i/d" /home/scripts/black_list.txtfi
done
MINUTE_IP_LIST=`awk '{print $NF}' /home/scripts/minute_black_list.txt`
for i in $MINUTE_IP_LIST
donslookup $i | grep -E "msn|googlebot|baiduspider|sogouspider"if [ `echo $?` -eq 0 ]then echo $i >> /home/scripts/white_list.txt/sbin/iptables -D INPUT -p tcp --dport 80 -s $i -j DROPsed -i "/$i/d" /home/scripts/minute_black_list.txt fi
done
}function help ()
{echo -e "\033[31mUsage: \033[32m$0 deny|minute|unlock|spider|help\033[0m"
}case $1 in
deny)deny;;
unlock)unlock;;
spider)spider;;
help)help;;
*)echo -e "\033[31mUsage: \033[32m$0 deny|minute|unlock|spider|help\033[0m";;
esac

转载于:https://my.oschina.net/2726276586/blog/792464

一个简单的封ip规则相关推荐

  1. 笨办法学C 练习45:一个简单的TCP/IP客户端

    练习45:一个简单的TCP/IP客户端 原文:Exercise 45: A Simple TCP/IP Client 译者:飞龙 我打算使用RingBuffer来创建一个非常简单的小型网络测试工具,叫 ...

  2. html抓取文章,网页抓取工具:一个简单的文章采集示例

    通过采集网页抓取工具火车采集器官网的faq为例来说明采集器采集的原理和过程. 本例以 http://faq.locoy.com/qc-12.html 演示地址,以火车采集器V9为工具进行示例说明. ( ...

  3. 一个简单的ip池的搭建

    在爬虫的时候总是会遇到跑的太频繁而导致ip被封号的问题,所以就想着做一个简单的ip池去规避这种反爬取的手段,当然我写的ip池功能稍微简单一点,但是也能满足在爬取时遇到的封禁ip的问题.整个流程就是先用 ...

  4. Linux自动封ip,Linux上基于配置文件封ip简单实践

    用iptabels封ip 假设封ip 54.95.192.213 iptables -I INPUT -p tcp -s 54.95.192.213 -i eth0 -j DROP 用nginx配置文 ...

  5. 详细介绍附代码:使用jquery,和php文件构建一个简单的在线聊天室,通过ip显示googlemap

    最近学习了关于使用最为流行的jquery发送请求,在实践中以最为简单的聊天室作为测验的辅助工具,对相关网页开发有一个初步的认识,希望大家能够一起学习进步.        首先介绍一下相关文件信息和功能 ...

  6. hosts多个ip对应一个主机名_一个简单的Web应用程序,用作连接到ssh服务器的ssh客户端...

    WebSSH 一个简单的Web应用程序,用作连接到ssh服务器的ssh客户端.它是用Python编写的,基于tornado,paramiko和xterm.js. 特征 支持SSH密码验证,包括空密码. ...

  7. 分享一个抓取网易云不同分类下歌曲热评的python爬虫,并且不怕被封ip(非使用代理)

    这个爬虫是我一门课程的作业中用到,很久了,偶然想起就分享到这里吧,我写的大部分代码,小部分由我同学完成. 再抓评论过程中被封ip这是个令人头疼的事情,如果你是宽带用户,并且是动态ip,被封ip后直接调 ...

  8. netfilter编程实例——一个简单的防火墙

    一.iptables防火墙netfilter介绍 Linux 防火墙包含两部分,内核 netfilter 和用户空间工具 iptables.管理员通过 iptables 工具集和内核打交道,将防火墙规 ...

  9. python爬微博关键字_一个简单的python爬虫实践,爬取包含关键词的新浪微博

    此项目主要功能是通过微博"搜索"页面,每天自动爬取所有包含自定list中词汇的微博原数据.低速可控,简单粗暴,适合用来有针对性的搜集数据量不是很大的包含关键词的微博,每日可爬3-6 ...

最新文章

  1. beautifulsoup里面的find()和findall()小代码测试
  2. 独家 | ​PyMC3 介绍:用于概率编程的Python包
  3. java 匿名类 实现接口_细谈 Java 匿名内部类 【分别 使用 接口 和 抽象类实现】...
  4. 苹果官网区号怎么填?
  5. Android内部存储与外部存储解析
  6. 12306加密传输_三大运营商发5G消息白皮书:短消息服务升级,支持加密传输
  7. APP界面设计临摹模板 |教你ui kit套件要怎么使用呢?
  8. Python基本用法练习题
  9. 基于Android P,自定义Android开机动画的方法
  10. 敏捷工具:用户故事地图梳理需求全景
  11. 数学公式神器【MathPix Snip】,截屏公式转为LaTeX代码
  12. 远程计算机无法操作,win7系统的QQ远程协助无法控制计算机的问题的解决方法
  13. 基于Ubuntu 18.04配置固定IP方法
  14. 进阶篇:3.4)机械加工件设计
  15. Linux下ORACLE的/u01空间不足解决办法
  16. 微信边写边译功能怎么开启
  17. linux开关机啪啪响(pop noise)的解决方案
  18. 服务器系统防火墙设置在哪里设置方法,服务器怎么设置防火墙设置在哪里
  19. 今日头条阅读量怎么刷_怎么刷今日头条阅读量?
  20. 通过internet连接到股票信息服务器,一种股票机的制作方法

热门文章

  1. 暗黑2战网服务器爆率修改,暗黑2修改MOD最初级基础
  2. go 字符串转日期_Go技术日报(20200831)
  3. java客户端_Java常用的Http client客户端
  4. 开发缺点_开发移动端手机APP有哪些优缺点?
  5. php mysql query 行数_如何在PHP中获取MYSQL数据库返回的数据的行数?
  6. android动态更新配置文件,Android如何动态修改Manifest文件
  7. 计算机在生物学研究领域的认识,阮晓钢——北京工业大学——主要研究领域涉及:控制科学与工程,人工智能与认知科学,机器人学与机器人技术,计算机应用技术,生物医学工程与生物信息学。...
  8. oracle 字段全大写,Oracle如何批量将表中字段名全转换为大写(利用简单存储过程)...
  9. C语言灵魂——算法!
  10. word 通配符_学会Word通配符,可以帮助我们批量处理好多事情