搜索机器人或垃圾邮件机器人在读取页面时是否能够模拟/触发JavaScript事件?
答案 0 :(得分:1)
不,因为搜索机器人会获取静态HTML流。他们没有运行任何初始化事件,例如{JavaScript}代码中的init()
或myObj.init()
。他们不会加载任何外部库,如jQuery,也不会执行$(document).ready
代码或任何标准.click()
侦听器。因此,除非搜索机构作者有特定的理由有意构建他们的搜索机器人来触发或执行页面上的<script>
块,否则他们通常不会运行JavaScript代码。
我写了一个搜索机器人。我关心的只是提取链接&amp;页面上的文字。但是,我不想运行其他人的客户端日历组件或视频播放器组件。我不希望将JS代码插入到我的数据库中,最终可能会出现在搜索引擎结果页面(SERP)上。因此没有理由对eval()
块中的任何代码运行<script>
命令,也不会触发JS层中的任何初始化事件。
当搜索机器人加载HTML DOM时,通常会在其中嵌入外部.js文件。因此,要执行JS,需要解析多个.js文件的字符串,然后为这些文件构建一个连接器。然后尝试执行已下载的所有内容。这对搜索机器人作者来说是额外的工作,完全没有净收益。我们根本不希望JS代码出现在我们的SERP中的任何地方。否则,在SERP上看到JS代码看起来像是一个糟糕的搜索结果。但是,机器人可以查看<script>
代码中的内容。只是寻找抓取链接。所以这可能就是为什么人们开始认为机器人可以执行JavaScript,但他们只是真正解析它们的文本链接。
答案 1 :(得分:0)
Here’s有人认为Google在抓取无头WebKit时会加载页面,以便有机会索引AJAX内容以及其他原因。搜索机器人通常不会提交表格。
我看了一下你的网站,保护完全是客户端的。由于HTML表单实际上只是对要提交给某些URL的键/值的描述,因此没有理由任何人不能仅使用bot发布此数据。
示例:
POST /contact
/* ... */
fullname=SO+test&email=test%40example.com&reason=test&message=test
此外,这很重要,你这样惩罚合法访问者。有各种原因导致JavaScript被阻止,无法加载或无法正常工作。