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

Laravel13+Filament+Vue项目:CSRF保护下如何让谷歌爬虫访问AdSense页面?

登录后页面接入Google AdSense的CSRF与爬虫访问问题

核心问题解答

  • 谷歌爬虫能不能绕开CSRF验证访问登录页?
    不行。谷歌爬虫不会自动处理Laravel的CSRF令牌,正常登录请求会因为缺少有效令牌被拦截,根本进不了授权页面。

  • 要不要给爬虫做专属登录页并禁用CSRF防护?
    可以这么做,但绝对不能全局禁用CSRF,只能针对爬虫专属的登录路由单独关闭验证,同时要严格限制这个路由的访问主体。

  • 这种方案安全性怎么样?
    只要做好限制,风险完全可控。核心是只允许Google AdSense的爬虫访问这个专属登录入口,同时给爬虫用的账号设置最小权限,避免被恶意利用。

具体实现方案(适配Laravel 13 + Filament)

1. 识别AdSense爬虫

AdSense爬虫的User-Agent里会包含 Mediapartners-Google,可以通过这个标识判断请求来源。

2. 搭建爬虫专属登录逻辑

  • 先在后台创建一个专门的爬虫用户,比如命名为adsense_crawler,用Filament的权限系统只给它分配查看目标页面的权限,不能给任何编辑、删除、修改的权限,把权限缩到最小。
  • 新增一个不需要CSRF验证的登录路由,只给爬虫用:
// routes/web.php
Route::post('/adsense-auto-login', [AdsenseAuthController::class, 'autoLogin'])->withoutMiddleware([VerifyCsrfToken::class]);
  • 控制器里写自动登录逻辑,直接用预设的爬虫用户ID登录,同时校验User-Agent:
// app/Http/Controllers/AdsenseAuthController.php
public function autoLogin(Request $request)
{
    // 只允许AdSense爬虫访问
    if (!str_contains($request->userAgent(), 'Mediapartners-Google')) {
        abort(403, 'Unauthorized');
    }
    
    // 登录预设的爬虫用户
    auth()->loginUsingId(1); // 替换成你的爬虫用户ID
    return redirect()->intended('/');
}

3. 用中间件自动处理爬虫登录

创建一个中间件AllowAdsenseCrawler,让爬虫访问目标页面时自动完成登录:

// app/Http/Middleware/AllowAdsenseCrawler.php
public function handle(Request $request, Closure $next)
{
    // 检查是否是AdSense爬虫且未登录
    if (str_contains($request->userAgent(), 'Mediapartners-Google') && !auth()->check()) {
        auth()->loginUsingId(config('adsense.crawler_user_id'));
    }
    
    return $next($request);
}

然后把这个中间件注册到app/Http/Kernel.php的web中间件组里,或者单独给需要展示广告的路由组使用。

4. 额外安全校验

  • 不要把爬虫用户的密码泄露出去,因为我们用的是loginUsingId直接登录,完全不需要密码。
  • 定期查看服务器日志,检查这个专属登录路由的访问记录,确保只有AdSense爬虫在访问。
  • 严格按照Google AdSense的规则展示广告,避免页面内容违规导致账号被封。

内容的提问来源于stack exchange,提问作者Francisco Sanchez de la Campa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 13:27:32