网站在显示“正在检查站点连接是否安全”时正在做什么?

Hon*_*dek 26 networking security website frontend

有些网页在打开时会显示类似的内容,并显示类似“检查站点连接是否安全”的消息: 在此输入图像描述 这个过程通常需要一些不平凡的时间,有时它需要我单击一个Verify按钮,但通常它只是满意地转动轮子一段时间,然后进入所请求的页面。

这种情况发生在许多网页上。

当这张图片向用户显示时,幕后究竟发生了什么?

注意,我是一名后端程序员,我对前端的东西只有非常基本的了解。

编辑(2024 年 2 月 15 日):

看来 FanFiction 或 CloudFare(无论消息的措辞来自谁)都感到羞愧并更改了消息! 在此输入图像描述

use*_*686 29

带有类似“检查站点连接是否安全”的消息:

“检查您的连接的安全性”与安全性或连接无关,它的意思是“检查您是否不是机器人”。该网站正在使用 Cloudflare CDN 服务,页面是 Cloudflare 的“Turnstile”自动机器人检测,类似于 reCAPTCHA 或 hCaptcha。

(FanFiction.Net 启用了严格模式,因为它确实不喜欢其中发布的故事可能被存档在其他地方的想法。其他网站可能会在垃圾邮件机器人等大量涌入时启用此功能。)

该过程通常需要一些不平凡的时间

这个具体示例似乎主要是一种“工作证明”类型的检查,系统授予您访问权限以换取消耗一些 CPU 时间(与 Hashcash 相比),尽管它很可能还包括各种其他基于 JavaScript 的机器人/抓取工具Cloudflare 可以想到的检测(确切的检查没有公开记录,因为这大多会达不到目的,并且可以安全地假设它们也会随着时间的推移而改变)。

  • 这就是答案。Cloudflare 显示的消息是一个居高临下的谎言,其措辞可能是为了掩盖他们对您/您的设备/您的浏览器做出的判断,错误地让他们听起来像是在做一些保护您的事情。该消息的准确版本是“我们的客户希望确保他们的网站不会被机器人批量访问,我们正在您的浏览器中运行检查以确定是否限制您的访问”。 (21认同)
  • @R..GitHubSTOPHELPINGICE 同意,当他们的“安全”测试失败时,我发现它格外光顾,因为我通过有选择地禁用不必要的 JavaScript 来保护自己免受第三方利用 - 然后他们声称我的浏览器不够安全。 (10认同)
  • 您能否详细说明一下“基于 JavaScript 的检测……未公开记录”的想法?我自己不能很好地阅读 JavaScript,但我希望客户端所做的任何事情都不能根据定义保密,因为脚本必须下载到浏览器? (4认同)
  • 是的,但通常会进行足够数量的代码混淆,以阻止至少对其进行基本分析的尝试。请参阅“验证码绕过服务”提供商的[本文](https://2captcha.com/blog/turnstile-on-cloudflare-challenge-pages)。 (4认同)
  • @HonzaZidek 是的,但是可以将代码混淆到任何没有处理 JS 的专业知识的人都能够弄清楚它在做什么。对于 JS 来说,这可能非常容易,因为有很多可疑的遗留行为,特别是在类型强制的处理方面(例如,在 JS 中,`0 == []` 计算结果为 true)。 (4认同)