django中根据user agent返回Forbidden访问(YisouSpider攻防战)
专栏:web开发笔记 Dec. 14, 2025, 11:55 a.m. 11 阅读
如果user agent带有“spider”,就可以认为是搜索机器人,可以进行屏蔽

如果user agent带有“spider”,就可以认为是搜索机器人,可以进行屏蔽,方法如下。

在django view里从request中读取user agent。user agent信息存储在request.META字典里,用“HTTP_USER_AGENT”取出来。

def xxx(request):
    user_agent = request.META.get('HTTP_USER_AGENT', '')

然后进行spider判断,如果含有spider,就返回http Forbidden。

from django.http import HttpResponseForbidden
if re.search('spider', user_agent, re.I):
    return HttpResponseForbidden('rejected')

这个方法只是暂时把YisouSpider挡住了,没想一两个小时后,YisouSpider居然伪装了一个看起来正常的user agent:“Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.95 Safari/537.36 QIHU 360SE”,agent里带QIHU 360SE,真是无语了。
另外,也设置过了apache,Require not ip xxx.xxx.xxx.xxx,加入了近20个ip,但YisouSpider的ip真多,根本无法挡住。
看来要根据ip访问的频次和浏览网站的时间长短来拦截了。

感谢阅读,更多文章点击这里:【专栏:web开发笔记】
最新20篇 开设专栏