nginx+lua防采集

简介

之前介绍了nginx+lua+redis实现验证码防采集,在此基础上我又增加了搜索引擎的域名反查,以排查伪造搜索引擎的爬虫。原理是查看根据useragent为搜索引擎的客户端,如:百度、搜狗、谷歌等;通过nslookup或其他工具反查其ip所对应的域名是否包含baidu、sogou等关键字,若包含则直接加入白名单;否则认为是伪造搜索引擎的。当然更严谨的是判断其一级域名的关键字是否为baidu或搜狗

实现

vim access.lua
--搜索引擎名称
crawl = {"Baiduspider", "Sogou"}
--搜索引擎关键词
keyword = {"baidu", "sogou"}

--搜索引擎爬虫判断
--先判断user_agent是否为空
if ngx.var.http_user_agent ~= nil then
        for i = 1, 2 do
                if string.find(ngx.var.http_user_agent, crawl[i]) ~= nil then
                        --反查搜索引擎域名
                        local handle = io.popen("nslookup " ..ngx.var.remote_addr)
                        local result = handle:read("*all")
                        handle:close()

                        --检查是否包含关键字
                        for j = 1, 2 do
                                if string.find(result, keyword[j]) ~= nil then
                                        res , err = cache:set("bind_"..ngx.var.remote_addr , 0)
                                        res , err = cache:set("white_"..ngx.var.remote_addr , 1)
                                        goto label
                                end
                        end

                end
        end
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值