实现动态封禁 IP,干死爬虫
为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单。对于黑名单之内的 IP ,拒绝提供服务。
实现 IP 黑名单的功能有很多途径:
1、在操作系统层面,配置 iptables,拒绝指定 IP 的网络请求;
2、在 Web Server 层面,通过 Nginx 自身的 deny 选项 或者 lua 插件 配置 IP 黑名单;
3、在应用层面,在请求服务之前检查一遍客户端 IP 是否在黑名单。
为了方便管理和共享,我们选择通过 Nginx+Lua+Redis 的架构实现 IP 黑名单的功能,架构图如下:
1、安装 Nginx+Lua模块
推荐使用 OpenResty,这是一个集成了各种 Lua 模块的 Nginx 服务器:
2、安装并启动 Redis 服务器
3、配置 Nginx 示例:
Nginx 配置,其中
lua_shared_dict ip_bl
实现动态封禁 IP,干死爬虫最先出现在Python成神之路。
共有 0 条评论