是否可以保护 JSON-LD 免受电子邮件收割机的侵害?

Is it possible to protect JSON-LD from email harvesters?

我想将 JSON-LD 用于 SEO 目的,但不确定如何防止自动电子邮件收集器从源中获取地址。

email schema 中,您提供一个电子邮件地址。我总是通过使用 JS 来显示它们或其他方法以某种方式混淆电子邮件地址。到目前为止,这有助于阻止垃圾邮件。

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Person",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Seattle",
    "addressRegion": "WA",
    "postalCode": "98052",
    "streetAddress": "20341 Whitworth Institute 405 N. Whitworth"
  },
  "colleague": [
    "http://www.xyz.edu/students/alicejones.html",
    "http://www.xyz.edu/students/bobsmith.html"
  ],
  "email": "mailto:jane-doe@xyz.edu",
  "image": "janedoe.jpg",
  "jobTitle": "Professor",
  "name": "Jane Doe",
  "telephone": "(425) 123-4567",
  "url": "http://www.janedoe.com"
}
</script>

我能想到的唯一方法是使用 JS 动态创建上面的内容,我希望收割机在大多数情况下无法解释,但是那么这很可能会破坏搜索引擎的支持。有什么解决办法吗?

除非您可以检测到恶意机器人(并为其提供没有电子邮件地址的版本),否则没有明智的解决方案。使用结构化数据的主要原因之一是让机器人更容易访问,所以这是设计使然。

您可以尝试更难获取电子邮件地址:

  • Schema.org 的 email property 期望 Text 作为值,因此可以使用混淆(例如,jane-doe at {this domain} ).
    希望:默认情况下,机器人不理解您的混淆方法。

  • 如果不需要使用 Schema.org 的 email 属性:FOAF 的 mbox_sha1sum property 需要 SHA1 哈希电子邮件地址。
    希望:机器人不要尝试(或尚未)找到相应的电子邮件地址。

  • 您可以使用 JavaScript 添加 email 属性(例如 )。
    希望:机器人不执行 JavaScript.

当然,这也让优秀的机器人变得更加困难,并且在某个时候您可能想要考虑根本不提供电子邮件地址。

如果您只想向某些消费者提供电子邮件地址,您可以为这些消费者提供包含电子邮件地址的文档,并为所有其他机器人提供没有的文档。但是搜索引擎机器人 might not like this method。而且你使新消费者或你不认识的消费者处于不利地位。

我只想提供未混淆的电子邮件地址,供大家使用,making the life of visitors (humans as well as bots) easier。垃圾邮件应该是你的问题,而不是他们的问题;这是一个可以解决的问题。

JSON-LD 使机器人可以随时使用数据,包括可以轻松欺骗其他机器人身份的电子邮件收割机。我建议将电子邮件地址留在 JSON-LD 之外,这不会损害 SEO,并且这些电子邮件的所有者会因此爱上你。否则你 - 将 - 导致他们的邮箱成为垃圾邮件的持续目标