网络爬虫是否已被模糊的电子邮件所愚弄?

信息安全 电子邮件
2021-08-29 08:21:19

这是一种常见的在线做法,而不是像someone@example.com人们那样写你的电子邮件,而是像那样写它someone AT example.com,以试图让网络爬虫更难在网站上找到你的电子邮件地址。

这还那么有效吗?我想任何在网上搜索电子邮件的人都可以轻松地检查这样的模式并将其转换为电子邮件地址。

我敢肯定,一些隐藏电子邮件地址的策略比其他策略更有效,因为并不是每个人都能读懂的组合都可以在程序中考虑,但是像我上面描述的那样常见的组合可以找到容易地。

如果试图混淆一封电子邮件,可以使用什么样的策略来确保人类读者可以理解而程序却不能?刮板不能继续更新以了解作者发现的新模式吗?

4个回答

您确实有多种方法,您当然应该考虑到此类获取此内容的机器人本质上是抓取它们遇到的任何页面并搜索看起来像电子邮件地址的模式。正如你所说,这有点像军备竞赛,没有什么能阻止开发此类刮板的人们实施这些方法(等等,这就是你问的原因吗?)

在大多数情况下,您将希望避免从您的电子邮件地址实际创建超链接,并且您当然希望避免使用 mailto: - 这基本上是在向任何阅读页面的人宣布“嘿,我是一个电子邮件地址”。

让我们从漂亮而简单的间距开始:

m y e m a i l @ m y d o m a i n . c o m

这显然是一个人类的电子邮件地址,看起来像是一堆随机字母,带有空格的刮板。不喜欢间距?不太常见但更万无一失的是将您的电子邮件地址转换为图像。它仍然是人类可读的,但它不会是大多数电子邮件抓取工具正在寻找的东西,更不用说能够解析了。

将您的标点符号(@ 和句点)转换成它们的 HTML 等价物(@.分别)怎么样?

myemail@mydomain.com

当由浏览器呈现时,这仍然看起来像一个电子邮件地址,但从抓取的角度来看,它不会那么难解决,因为您只需寻找.and @- 但为什么要停在那里?为什么不一路走,只对整个电子邮件地址进行编码?这可以使用Rumkin 的 Mailto Encoder 之类的工具轻松完成,突然间您的电子邮件地址如下所示:

myema%69l@my%64%6fma%69n%2e%63om

这仍然像您在浏览器中所期望的那样呈现,但就任何不考虑编码的刮板而言,基本上都是胡言乱语。

如果你喜欢这样的东西,你也可以用 CSS 来做到这一点:

<style>
  my-email::after { content: attr(data-domain); } 
  my-email::before { content: attr(data-user); }
</style>

<my-email data-user="myemail" data-domain="mydomain.com">@</my-email>

或者,正如 Stack Overflow 上已经讨论的那样,您可以只使用 JavaScript。

使用 javascript 隐藏您的电子邮件只能让您到目前为止。有两种类型的抓取引擎用于从网站收集数据。

经典: 经典爬虫只是简单地对 url 执行 GET 请求,然后解析从服务器返回的 HTML。

  • 优势:从带宽和处理器的角度来看,具有快速数据收集和更高吞吐量的优势。
  • 缺点:它实际上并没有像浏览器那样加载页面。由于没有加载 DOM,因此任何基于 javascript 的内容都将无法用于刮板。这意味着在对抗这些爬虫时,Flyk 提到的任何方法都可以很好地发挥作用。

基于浏览器:基于浏览器的刮板是一种新型刮板,允许引擎将页面实际加载到“网络浏览器”中。(其中一些是无头的 - phantom.js

  • 优点:这种类型的抓取工具能够有效地呈现网页并完全按照用户看到的结果抓取结果。这意味着这种类型的爬虫可以读取任何使用 javascript 编码的电子邮件。

  • 缺点:这些抓取工具的创建也更加复杂,并且需要更长的加载时间和更多的带宽才能抓取页面。由于这些原因,许多刮刀仍然只是使用经典的刮刀风格。

最后,最好使用 javascript 对您的电子邮件地址进行编码,而不是仅以纯文本形式输入。如果您真的想要为您的电子邮件提供最好的保护,您应该采用创建电子邮件地址图像的方法。

可以使用 OCR 读取图像,但其复杂性远远超出大多数抓取引擎。

一个相当简单的想法是在图像和文本中包含电子邮件地址。我想这种方法可能会被可以读取图像中文本的程序打败,但它比纯文本更难打败。

如果试图混淆一封电子邮件,可以使用什么样的策略来确保人类读者可以理解而程序却不能?

另一种解决方案(不在页面上显示电子邮件)是使用带有某种验证码机制的联系表格来防止大量邮寄。

您可以添加一个来自真实电子邮件地址的自动回复(可以保存为联系人)。