PAYATHON 2026

Laravel 登录启用 CSRF 后,AdSense 爬虫如何访问受保护页面?

数据阿明

结论

保留正常登录入口的 CSRF 保护,先验证 AdSense 爬虫能否完成现有登录流程。CSRF 不会天然阻止自动化客户端登录。客户端需要满足服务器的请求校验要求,并在登录前后保持 Session Cookie。

Google 官方提供了爬虫登录配置,但相关说明没有承诺自动提取动态 CSRF token,也没有保证能执行任意 Vue 登录流程。因此,不能断言爬虫一定能通过你的登录页,也不应仅因为配置了用户名和密码就关闭 CSRF。Google 官方配置说明

CSRF 会在哪一步影响登录?

在需要校验 token 的 Laravel 登录请求中,客户端通常需要先取得登录页和对应的 Session Cookie,再提交属于该 Session 的 CSRF token。即使用户名和密码正确,缺少 token 或 token 不匹配仍可能导致登录失败。

例如,普通 Blade 表单可以通过以下方式携带 token。这里假设应用已经定义了接收表单数据的 POST /login 路由,字段名也与后端一致:

<form method="POST" action="/login">
    @csrf
    <input type="email" name="email" required>
    <input type="password" name="password" required>
    <button type="submit">登录</button>
</form>

这段代码只说明 token 的传递方式,不代表 AdSense 爬虫会自动读取隐藏字段。如果 Vue 使用 JSON 提交,还要检查实际的 token 传递方式,例如 X-CSRF-TOKEN 或 X-XSRF-TOKEN 请求头。Laravel CSRF 文档

不要将从浏览器复制的 _token 作为长期固定参数填入 AdSense。它与 Session 相关,换一个会话或会话失效后就可能无法使用。

如何确认当前登录流程能否兼容?

  1. 在浏览器开发者工具中检查登录请求的 URL、HTTP 方法、Content-Type、字段、Cookie 和 CSRF 请求头。使用 Vue 并不意味着后端一定接收 JSON。
  2. 按官方说明配置 AdSense 爬虫登录,填写受限 URL、登录 URL、登录方法和参数,并完成要求的网站验证。官方描述的 GET、POST 配置使用参数键值对,服务器需要返回可用于后续访问的登录 Cookie;这些说明不足以证明它支持任意 JSON 请求体。AdSense 登录配置
  3. 查看实际访问日志,确认请求是否到达登录接口、是否通过认证,以及之后访问受保护 URL 时是否仍被重定向回登录页。不要记录密码、完整 Cookie 或 token。
  4. 根据失败位置排查。419 通常提示 token 或 Session 问题;403 还可能来自来源校验、授权规则或其他中间件。如果登录成功后仍回到登录页,继续检查 Cookie、Session 和重定向过程,不能全部归因于 CSRF。

手动请求成功只能帮助确认服务端流程,最终仍需通过 AdSense 的实际抓取验证兼容性。即使登录成功,也要确认返回内容确实包含需要抓取的页面内容,而不只是前端页面外壳。

是否应该建立关闭 CSRF 的专用入口?

可以评估建立专用入口,但仅供爬虫使用并不等于安全。入口地址可能被发现,User-Agent 也不能作为身份凭据。

尤其不要让免 CSRF 的入口继续接受所有普通用户的账号密码,并写入与正常登录相同的浏览器会话。登录接口同样存在 login CSRF 风险:攻击者可能诱导受害者浏览器进入攻击者指定的账号,使受害者后续操作落在错误的账号中。OWASP 对登录 CSRF 的说明

如果实际抓取证明现有流程不兼容,需要设计替代入口,至少应满足以下条件:

  • 服务端只允许专用爬虫账号登录,该账号只能读取计划开放给爬虫的内容。
  • 爬虫身份不能修改资料、提交业务数据或执行管理操作,这些限制必须落实在服务端。
  • 使用独立的认证与会话边界,避免创建、覆盖或复用普通用户的登录会话。仅更换 URL 不能实现隔离。
  • 凭据通过 HTTPS 和 POST 提交,并具备限速、撤销及轮换机制。

这些是设计约束,不能保证某个具体实现已经安全。仅关闭一个路由的 CSRF 校验,不能代替对认证、会话和权限的检查。如果无法建立清晰的隔离边界,就保留现有保护,调整接入方式或暂缓在这些受限页面投放。

注意区分 AdSense 爬虫与搜索爬虫

这里配置的是 AdSense 广告爬虫的访问能力,不能据此推断普通 Google 搜索爬虫也能登录,或这些页面会因此进入搜索结果。Google 对 AdSense 爬虫的说明

备注:内容仅供参考。