Yisou爬虫疯狂抓取?Vercel高级配置一键封禁方案

Yisou爬虫疯狂抓取?Vercel高级配置一键封禁方案
极客猴大家好,我是极客猴。
作为博客(网站)的主理人,我们都希望自己的网站以及页面能被各大搜索引擎收录,这样能提高网站的每日访问量。
但有一些搜索引擎爬虫,不顾 robots.txt 协议,对进行网站疯狂爬虫。如果网站使用的是轻量服务器,又没有 CDN 加持,加上这些爬虫访问速率过大,服务器容易被这些爬虫搞崩溃。
其中就有臭名昭著的 YisouSpider,也就是神马搜索
,这搜索引擎爬虫动不动就来 10 几组 IP,给你网站进行疯狂爬虫。
我的博客网站部署到 Velcel,在后台看到这 YisouSpider 每天都来抓取数据,还一天访问好几次,一次就请求量也很大。
我也想是封禁这爬虫,在网络上搜索一圈之后,发现很大文章都是分享动态网站如何通过请求规则屏蔽爬虫。
我找不到 Vercel 如何封禁的相关文章。
实在没有办法,我只能借助 Deepseek 试试看。
Deepseek 给我两种方案,这两种方案理论上是可行。
方法一:中间件拦截
具体思路是通过中间件拦截 User-Agent
(Next.js/Node.js 项目适用)。
我将 Deepseek 提高的的详解步骤分享下:
1.创建中间件文件
在项目根目录下创建 middleware.js
(或 middleware.ts
,如果是 TypeScript 项目),并添加以下代码:
1 | export function middleware(request) { |
2.配置中间件生效范围(可选)
若需限制中间件仅对特定路径生效,可在 config
对象中定义匹配规则:
1 | export const config = { |
3.部署到 Vercel
提交代码并推送至 Vercel 部署,中间件会自动拦截所有匹配的请求。
4.验证方法
使用 curl
命令模拟 YisouSpider 请求,检查是否返回 403:
1 | curl -I -A "YisouSpider" https://your-domain.com |
方法二:Vercel 的路由配置
具体思路是通过 vercel.json
配置路由规则(通用 Vercel 项目)
我也将 Deepseek 提高的的详解步骤分享下:
1.创建 vercel.json
文件
在项目根目录下创建 vercel.json
,添加以下路由规则:
1 | { |
2.优化正则表达式(可选)
若需更精确匹配 User-Agent,可使用正则表达式(例如匹配 YisouSpider
开头):
1 | { |
3.部署到 Vercel
提交代码并推送至 Vercel 部署,中间件会自动拦截所有匹配的请求。
4.验证方法
使用 curl
命令模拟 YisouSpider 请求,检查是否返回 403:
1 | curl -I -A "YisouSpider" https://your-domain.com |
两种方案的优缺点
目前这两种方案的优缺点:
方法 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
中间件 | 灵活,可结合 IP 过滤等逻辑 | 需代码基础,仅支持 Node.js/Next.js | 复杂拦截逻辑(如动态判断) |
路由配置 | 无需代码,配置简单 | 规则较简单,依赖 Vercel 路由语法 | 快速屏蔽已知 User-Agent |
我经过测试之后发现,这两种方案确实可以,都能实现我需要的效果。
我在后台看到这爬虫规则被封禁。
后面,我在研究 vercel 的防火墙的时候,浏览到官方的文档,说直接自定义规则来控制访问内容。
这让我大喜,这说明能直接设置规则来屏蔽爬虫。
方案三:利用 Vercel 防火墙功能
登录到 Vercel 后台之后,通过在 firewall
页面中的右上角有个 configure
按钮进入配置页面。
点击 New Rule
按钮来新建规则,IF 判断后面选择 User Agent
等于 需要封禁的爬虫
,AND 后面的操作选择 Deny
来拒绝访问。
创建成功之后,在 Costom Rules
里面会看到自己刚创建 的规则。
我是将 Yisou
和 PeltalBot
都禁止访问。
创建之后, 在右上角会出现更新规则,记得 publish
最新规则,确保刚创建的规则能生效。
后续在 firewall
里面的 Costom Rules
就能看到这些爬虫都会被拦截,禁止访问。
这种方案是目前最省事,最方便的方式。