Javascript 如何阻止用户操作弹出窗口,同时让谷歌机器人抓取我的页面

Javascript 如何阻止用户操作弹出窗口,同时让谷歌机器人抓取我的页面,javascript,Javascript,我有一个非常令人困惑的问题。 我有一个只允许付费用户查看的页面。因此,如果用户无效,我会使用一个灰色背景的弹出窗口来阻止用户查看页面,但是这有一个潜在的缺陷,如果用户很聪明,他可以找到一个解决方法,并使用inspect元素绕过弹出窗口。我想到的另一个解决方案是将用户重定向到另一个页面,而不是像这样弹出: window.location = "http://www.example.com"; 但是,这可能存在一个潜在问题,或者可能是我在这方面错了: 我认为这样谷歌机器人将无法抓取该页面,因为重定

我有一个非常令人困惑的问题。 我有一个只允许付费用户查看的页面。因此,如果用户无效,我会使用一个灰色背景的弹出窗口来阻止用户查看页面,但是这有一个潜在的缺陷,如果用户很聪明,他可以找到一个解决方法,并使用inspect元素绕过弹出窗口。我想到的另一个解决方案是将用户重定向到另一个页面,而不是像这样弹出:

window.location = "http://www.example.com";
但是,这可能存在一个潜在问题,或者可能是我在这方面错了: 我认为这样谷歌机器人将无法抓取该页面,因为重定向发生了,然而在第一种方法中,谷歌肯定能够抓取该页面

现在我的问题是,如果我使用第一种方法,是否存在阻止用户操纵弹出窗口的方法,或者是否存在我可以区分用户是浏览页面还是浏览谷歌的方法


另外,如果我使用第二种方法,谷歌机器人是否能够抓取页面

您不能在前端实现付费阻塞或任何类型的真正安全/工作阻塞。我建议在后端阻止访问上述页面

在前端没有真正干净和100%的工作方式。用户总是可以绕过

对于谷歌来说,它将能够抓取页面,因为内容仍然可以通过呈现的html访问,因为它不关心页面的显示方式。不管怎样,它都可以访问内容,就像您在没有浏览器的情况下通过get请求获取html一样


您确实可以重定向,但仍然可以在后端而不是前端执行此操作。

您无法在前端实现付费阻止或任何类型的真正安全/工作阻止。我建议在后端阻止访问上述页面

在前端没有真正干净和100%的工作方式。用户总是可以绕过

对于谷歌来说,它将能够抓取页面,因为内容仍然可以通过呈现的html访问,因为它不关心页面的显示方式。不管怎样,它都可以访问内容,就像您在没有浏览器的情况下通过get请求获取html一样


您确实可以重定向,但仍然可以在后端而不是前端执行此操作。

您当前的解决方案不会将页面设置为私有-正如您正确指出的那样,任何人都可以使用开发工具操纵页面,爬虫程序也可以读取整个源代码。使用服务器端脚本阻止访问和/或根据授权令牌更改内容是正确保护内容并确保只有合法付费用户才能获得特权访问的唯一方法

如果你采用更好的安全性,你会担心谷歌(以及其他搜索引擎)无法抓取页面。但你的逻辑是有缺陷的:如果你让谷歌机器人仍然可以抓取页面,那么根据定义,它必须在未经授权的情况下可读。任何人都可以在谷歌缓存中查看它,它的部分内容可以显示在谷歌搜索中。这意味着它不是私人的。一旦出现这种情况,那么你的用户到底在为什么付费


实际上,你可能想做的是在用户未经授权的情况下显示一个精简版的页面,其中包含足够的信息,让搜索引擎了解整个内容,并让访问者为其余内容付费。然后,如果用户登录,服务器将识别该内容,并在页面刷新时显示其余内容。例如,这似乎与付费内容新闻网站大致相同。

您当前的解决方案并没有将页面设置为私有-正如您正确指出的那样,任何人都可以使用开发工具操作页面,爬虫程序也可以读取整个源代码。使用服务器端脚本阻止访问和/或根据授权令牌更改内容是正确保护内容并确保只有合法付费用户才能获得特权访问的唯一方法

如果你采用更好的安全性,你会担心谷歌(以及其他搜索引擎)无法抓取页面。但你的逻辑是有缺陷的:如果你让谷歌机器人仍然可以抓取页面,那么根据定义,它必须在未经授权的情况下可读。任何人都可以在谷歌缓存中查看它,它的部分内容可以显示在谷歌搜索中。这意味着它不是私人的。一旦出现这种情况,那么你的用户到底在为什么付费


实际上,你可能想做的是在用户未经授权的情况下显示一个精简版的页面,其中包含足够的信息,让搜索引擎了解整个内容,并让访问者为其余内容付费。然后,如果用户登录,服务器将识别该内容,并在页面刷新时显示其余内容。例如,付费内容新闻网站就是这样做的。

有时我使用inspect来绕过那些广告块弹出窗口和付费内容警告。重定向会更防BulletProfect有时我使用inspect来绕过那些广告块弹出窗口和付费内容警告。重定向将更具BuletProof性如何将用户重定向到另一个页面,而不是使用弹出窗口,而是使用客户端路由。这有什么缺陷吗?其实没有,但是为什么不在后端做呢?使用后端重定向可确保用户永远不会到达该页面。但是使用前端重定向,它会进入您的页面并可能取消重定向。不建议这样做。这可能是一个愚蠢的问题,但这是:window.location=“”;将进行服务器重定向,对吗?它向该位置发出请求,就像用href单击锚定标记一样。但它不是作为服务器端重定向处理的。希望你能理解其中的区别。我所说的服务器端的意思是,在返回响应之前,您需要检查