gpt4 book ai didi

html - 使链接完全不可见?

转载 作者:太空狗 更新时间:2023-10-29 13:24:16 25 4
gpt4 key购买 nike

我很确定很多人都想到了这个,但出于某种原因我无法使用 Google 和 StackOverflow 搜索找到它。

我想创建一个不可见的链接(被 robots.txt 列入黑名单)到 CGI 或 PHP 页面,以“诱捕”恶意机器人和蜘蛛程序。到目前为止,我已经尝试过:

  1. 正文中的空链接:

    <a href='/trap'><!-- nothing --></a>

    这在大多数情况下工作得很好,有两个小问题:

    问题:链接是文档正文的一部分。尽管用鼠标几乎无法点击它,但一些访问者在使用 TabEnter 键盘导航网站时仍然会不经意地点击它。此外,如果他们将页面复制粘贴到文字处理器或电子邮件软件中,例如,陷阱链接会被复制,有时甚至可以点击(有些软件不喜欢空的 <a> 标签,并将 href 复制为标签的内容)。

  2. 体内的隐形障碍物:

    <div style="display:none"><a href='/trap'><!-- nothing --></a></div>

    这解决了键盘导航的问题,至少在我测试的浏览器中是这样。该链接实际上无法从页面的正常显示中访问,但对于大多数具有当前智能水平的蜘蛛机器人来说仍然是完全可见的。

    问题:链接仍然是 DOM 的一部分。如果用户复制粘贴页面内容,它会重新出现。

  3. 内部评论 block :

    <!-- <a href='/trap'>trap</a> -->

    这有效地从页面的 DOM 中删除了链接。好吧,从技术上讲,评论仍然是 DOM 的一部分,但它达到了合规的用户代理不会生成 A 元素的预期效果,因此它不是实际链接。

    问题:如今大多数蜘蛛机器人都足够聪明,可以解析 (X)HTML 并忽略注释。我亲眼见过使用 Internet Explorer COM/ActiveX 对象解析 (X)HTML 并通过 XPath 或 Javascript 提取所有链接的机器人。这些类型的机器人不会被诱骗进入陷阱超链接。

我一直在使用方法 #3 直到昨晚,当我被一群机器人击中时,这些机器人似乎非常有选择性地选择它们遵循的链接。现在我回到方法 #2,但我仍在寻找更有效的方法。

我错过了任何建议或其他不同的解决方案吗?

最佳答案

按照你说的添加:

<a id="trap" href='/trap'><!-- nothing --></a>

然后用 javascript/jQuery 删除它:

$('#trap').remove();

垃圾邮件机器人不会执行 javascript 也不会看到该元素,几乎所有浏览器都会删除该元素,从而无法通过 Tab 键点击它

编辑:最简单的非 jQuery 方法是:

<div id="trapParent"><a id="trap" href='/trap'><!-- nothing --></a></div>

然后用javascript删除它:

var parent = document.getElementById('trapParent');
var child = document.getElementById('trap');
parent.removeChild(child);

关于html - 使链接完全不可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3648112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com