如何生成身份验证令牌以限制外部查询对我的服务器的访问



我打算在一个利基领域实现一个搜索引擎,在这个领域,结果必须只能从我的网站首页搜索,而不是通过API或第三方抓取。因此,它不是任何类型的用户身份验证令牌,因为至少在一开始,对网站的访问将是公开的(不涉及付费墙或用户帐户(

我的问题是,当有人发起搜索时,为每个用户/访问生成哪种方法的计算成本更低。我想使用页面加载时生成的随机令牌的本地存储(例如,当一些机器人扫描页面时,无法创建令牌,因此无法访问API接收搜索结果(,然而,为了检查令牌是否合法(由我的服务器(发布,这意味着增加一个连续的数据库存储,其中包含之前发布并由用户使用的所有令牌。

对于大量用户来说,当流量增加时,这不是一个实用的解决方案。我想知道是否有人成功地使用了类似或更好的方法。

我不想使用reCaptcha作为[人类用户]的验证方法,因为这会在平台上提供非常糟糕的用户体验,也会降低使用系统运行搜索查询的速度。

前端将在React或Vue上制作,后端将在Python上制作。

您可以在数据库中使用一组预先生成的UUID,以在使用时提取和标记,或者根据原始IP地址+时间戳计算SHA3-512哈希。在这两种情况下,您都可以通过适当的Cookie策略,使后端进程将包含令牌的Set Cookie注入到响应中,该密钥随后将由web浏览器自动提供,但不会由机器人提供。

最新更新