我正在寻找一种干净的方法让搜索引擎蜘蛛绕过@login_required,查看通常需要登录用户的页面。我可以编写中间件来自动将搜索引擎记录到一个虚拟帐户中,但这并不完全是我所说的干净。对更好的解决方案有什么建议吗?谢谢。
3 回答
不要这样做。这是“伪装”,可以让您从 Google 的索引中被禁止。
伪装是指向用户和搜索引擎呈现不同内容或 URL 的做法。根据用户代理提供不同的结果可能会导致您的网站被视为具有欺骗性并从 Google 索引中删除。
相反,您需要实施 Google 的First Click Free解决方案。在此设置中,来自 Google 搜索结果的第一次点击能够看到完整的内容,随后的点击被捕获。这可以在推荐人的基础上完成,也可以在 cookie 的基础上完成。您可以在此处阅读有关 First Click Free 的更多信息:
你为什么想做这个?如果搜索引擎可以看到这些页面,那么任何人都可以在没有登录的情况下看到它们,因为这些信息会出现在搜索引擎的结果页面上。在任何情况下,识别蜘蛛或机器人的唯一方法是通过其用户代理字符串,这对于欺骗来说是微不足道的。
我不明白。在“@login_required”中,您有一个重要的词:“必需”。如果它是“必需的”,那是有充分理由的。这意味着,为了查看网页,您的凭据是强制性的。因为内容是私密的、机密的等。
如果您想通过搜索引擎使您的页面可用,则必须将它们公开,因此不再需要登录。因此,您的视图不应受到 @login_required 装饰器的保护。
也许您的问题超出了您的页面的可用性。也许你的内容实际上是公开的,你的视图不应该受到这个装饰器的保护。也许您唯一需要做的就是为每个用户(登录或匿名)加载公共部分,如果您的用户被识别,最终加载私有位。
否则,为蜘蛛留下后门绝对是个坏主意,因为您的私人内容将不再是私人的。