1

由于蜘蛛通常不会执行 javascript,因此我正在考虑采用以下选项之一,以便成功地让它们为需要年龄验证的网站内容编制索引。

我的首选解决方案:

检查 cookie ' ageverification'。如果它不存在,添加一些 javascript 将用户重定向到 ~/verifyage.aspx,这将添加所需的 cookie 并将用户重定向到他们的上一个页面。

另一种解决方案:

如上,但不重定向用户。相反,如果 cookie 不存在,请在现有页面的“顶部”绘制年龄验证表格。

另一种解决方案:

添加爬虫可以跟踪的“是的,我已超过 18 岁”锚链接。我对这件事的合法性有点怀疑。

非常感谢任何见解或想法。

4

2 回答 2

2

我做什么 - 我将年龄验证存储在会话数据中。如果会话变量不存在,服务器会在正文末尾(页脚之后)附加一个 div,单击验证或单击退出。我使用 CSS 让它覆盖内容。

对于 css - 我使用:

display: block; width: 100%; height: 100%; position: fixed; top: 0px; left: 0px; z-index: 9999;

这会导致 div 覆盖图形浏览器中的所有其他内容,即使它位于正文的最末端。

对于未启用 JS 的用户,“Enter”链接指向一个网页,该网页设置会话变量并将用户返回到他们请求的页面。这导致浏览器的两个页面加载让他们获得他们想要的内容,这并不理想,但对于非 JS 启用的浏览器来说,这是唯一的方法。

对于支持 JS 的浏览器,页面上附加了一个小的 JavaScript,它将“Enter”链接 href 链接更改为 # 并将一个非常基本的函数附加到单击事件,以便单击 Enter 触发使用 XMLHttpRequest 告诉服务器人点击“进入”。然后服务器更新会话并以 200 OK 响应响应 XMLHttpRequest,触发 JavaScript 隐藏覆盖内容的年龄验证 div。因此会话被更新,因此服务器知道用户验证了年龄,并且用户无需在浏览器中重新加载页面即可看到他们想要的内容,从而获得更好的用户体验。

因此,年龄验证可以在没有 JavaScript 的情况下通过以无状态方式或以更友好的方式使用 JavaScript 将用户发送到验证页面来进行。

当搜索蜘蛛抓取网站时,它会在每个页面上获取年龄验证 div,因为蜘蛛不会设置必要的会话变​​量,但由于 div 位于 html 正文的最后,蜘蛛仍然首先索引真实内容.

于 2011-10-31T05:17:57.497 回答
1

无论哪种方式,你都有一个真正的问题。

如果您让爬虫进入您网站的年龄验证部分,那么它的索引中就有该内容。这意味着它将向搜索事物的用户呈现其中的片段。谁没有通过您的年龄验证。就 Google 而言,这意味着用户实际上可以访问您放置在验证墙后面的全部内容,而无需通过您的筛选器——他们可以从 Google 缓存中提取这些内容!

没有胜利的情况,对不起。要么有年龄验证的内容或 SEO,而不是两者兼而有之。即使您以某种方式告诉搜索引擎不要吐出您的内容,您的 URL 出现在搜索结果中这一事实也会告诉人们您网站的(受限)内容。

此外,关于您的 JavaScript 想法:这意味着禁用 JavaScript 的用户会在不知道应该有点击的情况下获得内容。如果您在顶部显示横幅,则意味着您在他们接受之前将令人反感的内容发送到他们的计算机。这意味着它在他们的浏览器缓存中。或者他们可以直接破解您的横幅,并在不点击“确定”的情况下获得您所掩盖的任何内容。

我不知道您的网站是做什么的,但我真的建议强迫用户在允许他们查看任何成熟的内容之前向您发布表单。将他们的接受状态存储在会话变量中。那是不可伪造的。不要让搜索引擎进入,除非它也足够老了,或者你有一些强有力的方法来限制它对所看到的内容和关于你自己责任的强有力信息的作用。

于 2010-07-09T11:19:12.810 回答