You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署在AWS的Laravel站点遭爬虫扫描,如何无需WAF拦截WP相关请求?

拦截WordPress扫描垃圾请求通用方案

以下方案无需依赖WAF,可同时适配AWS Vapor托管和其他任意平台的站点,在请求处理流程早期拦截目标请求,降低不必要的资源消耗:

1. Laravel全局中间件拦截(最适配Laravel项目)

在Laravel层面实现全局拦截,所有请求进入业务逻辑前先匹配扫描特征,命中则直接终止请求:

  • 执行命令生成中间件:php artisan make:middleware BlockWpScanRequests
  • 编辑生成的中间件文件,示例代码如下:
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class BlockWpScanRequests
{
    // 定义需要拦截的WP相关路径特征
    protected $blockPatterns = [
        'wp-',
        'wordpress',
        'wp-admin',
        'wp-content',
        'wp-includes',
        'xmlrpc.php',
        'wp-login.php',
        'wp-config.php'
    ];

    public function handle(Request $request, Closure $next)
    {
        $requestPath = $request->path();
        foreach ($this->blockPatterns as $pattern) {
            if (str_starts_with($requestPath, $pattern) || str_contains($requestPath, $pattern)) {
                // 返回444无响应关闭连接,资源消耗最低
                abort(444);
            }
        }
        return $next($request);
    }
}
  • 注册全局中间件:在app/Http/Kernel.php文件的$middleware数组中,追加该中间件类,确保所有请求都会经过拦截校验。

2. Web服务器层面拦截(性能更高,适配所有站点)

直接在Nginx/Apache配置中添加规则,请求到达PHP处理流程前直接拦截,资源消耗比应用层中间件更低:

  • Nginx配置:在站点server配置块中添加以下规则
location ~* ^/(wp-|wordpress|wp-admin|wp-content|wp-includes|xmlrpc\.php|wp-login\.php|wp-config\.php) {
    return 444;
    access_log off;
}
  • Apache配置:在站点根目录的.htaccess文件中添加以下规则
RewriteEngine On
RewriteRule ^(wp-|wordpress|wp-admin|wp-content|wp-includes|xmlrpc\.php|wp-login\.php|wp-config\.php) - [F,L]

3. 高频扫描IP自动封禁(可选进阶配置)

针对反复发起扫描请求的IP,可添加自动封禁规则进一步降低消耗:
在上述拦截逻辑中添加IP计数逻辑,比如同一个IP10分钟内命中3次拦截规则,直接封禁1小时,可借助Laravel自带的缓存系统或者限流中间件实现,无需额外依赖。

注意:可根据站点实际收到的扫描路径调整拦截规则,避免误拦截站点本身的正常请求路径

内容的提问来源于stack exchange,提问作者user1469734

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:54:00