当前位置:web 服务器 > Nginx >>

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
Apache
IIS
Nginx
Tomcat
如果你遇到web 服务器难题:
访问www.zzzyk.com 试试
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,