当前位置:主页 > 互联网知识 >

HTML网页中电子邮箱(Email)地址的加密和混淆防爬取

发表日期:2019-05-09 22:32文章编辑:Smileby陌少羽浏览次数: 标签:Email加密,

邮箱里垃圾邮件一直有很多,这让我不得不重新审视,发布在网页上的电子邮箱地址,为了避免垃圾邮件,我刻意将@更换成#,也许这在十年前是个不错的办法,但是随着神经网络和机器学习新算法的发展,这一类小手段也面临失效的风险,因为大部分都是通过修改电子邮箱地址的“@”符号,通过正则表达式筛选和特征值匹配,比如hotmail.com、gmail.com、163.com这一类疑似电子邮箱地址的特征,还是可以抓取到电子邮箱地址,所以在将Email发布到HTML网页之前我们要对其进行加密和混淆。

下面我以john@example.com为例,介绍几种加密和混淆的反垃圾邮件手段。

1. 生成图片

利用传统的图灵测试CAPTCHA,将防止采集的电子邮箱地址生成图片,利用机器不能识别的特性,来区别人和机器,生成图片的方式有很多,除了高大上的Photoshop外,甚至可以使用系统自带的绘图工具来完成,另外希望偷懒的话,还有一些在线工具可以帮助到你,比如《Top 10 Websites to Turn Your Email Address into An Image》

 

当然生成图片也不是万无一失的,有理由相信既然基于图片的验证码能够被机器识别破解,那么基于同样技术的电子邮件地址肯定也再所难免,特别是OCR技术的逐步发展和成熟,采集程序可以对整张网页进行OCR,最后提取需要的内容,所以我们还需要对图片生成的邮箱地址进行噪点、干扰线等混淆,具体可以参考有关如何防止验证码被识别的相关内容。

但是经过这么一设计,我们的邮箱地址对于真正需要的人来说则变得不那么友好,人们获取准确邮箱地址的难度也加大了。

2、替换关键符号

我们知道爬虫抓取电子邮箱地址很多都是通过@这个特征符号,正如我文章一开头所述,将这个符号替换成别的那么将大大降低我们电子邮箱被抓取的概率,当然这样做的坏处是除非给用户以暗示,否则需要另外说明这是个电子邮箱地址,比如john#example.com又或者john{a}example.com等等,当然智能的电子邮箱抓取软件可以对这些小把戏自动免疫,通过判断域名也可以得到这是个电子邮箱地址,所以说将@替换成一个很特别的符号也是一种生存之道,对于这种替换手段来说,更有甚者将邮箱地址变成句子,比如john AT example DOT com,这样看来应该更安全了,但是也给真正需要这个电子邮箱地址的用户带来了少许困扰。

3、使用JavaScript

JavaScript简称JS通常作为嵌入到网页的一段小脚本,为其提供更为丰富的交互和应用,我们通过JS混淆我们的电子邮箱地址,最后再用document.write或者innerHTML等输出来,这样的好处是绝大多数爬虫并不能执行网页里的脚本,它们只擅长抓取静态文本,所以完全不必担心邮箱地址泄露给爬虫,另外对于最终用户来说,通过浏览器的解释,展现在他们面前的全是一个完整的电子邮箱地址,用户体验好,不过这种方式有个较为致命的弱点就是如果用户浏览器不支持脚本,那么邮箱地址也就不能正常显示了,虽然这种情况不多见。

一个典型的例子如下,当然有很多变形的实现,比如PHP hide_email我这里也不多介绍了。

var username = "john";
var hostname = "example.com";
document.write(username + "@" + hostname);

尤其值得一提的是ROT13算法的应用,ROT13即回转13位,说到底就是将字母表首位衔接成环,将待编码字母映射到其旋转的13位的字母上,如下示意图所示:

ROT13 算法示意

对于PHP来说,有函数str_rot13可以直接使用,然后根据其算法反转即可得到加密前的文本,一般使用如下JS代码:

<script type="text/javascript">document.write("<n uers=\"znvygb:xvpx@vaprcgvba.pbz\" ery=\"absbyybj\">Fraq n zrffntr</n>".replace(/[a-zA-Z]/g, 
  function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);}));
</script>

上述代码将解码成以下HTML:

<a href="mailto:kick@inception.com" rel="nofollow">Send a message</a>

4、使用HTML和CSS混淆

当然我们除了采用JavaScript,还可以利用HTML或者CSS的一些小技巧(tricks),使用HTML注释混淆,在HTML中以<!---->包含的是注释,不会被浏览器渲染给最终用户,那么我们可以充分利用这一点从而将我们的电子邮件地址打造成这样的:

jo<!-- >@. -->hn@<!-- >@. -->exam<!-- >@. -->ple.com

这里<!-- >@. -->不会被浏览器显示,但是足以混淆机器爬虫的抓取。

同样的结合CSS的display:none,我们仍然可以得到以下类似手段的混淆:

jo<span style="display:none">@</span>hn@<span style="display:none">@</span>exam<span style="display:none">@</span>ple.com

同样的CSS的display:none必然注定了其包含的文本不会被显示,所以最终显示的也是完整的电子邮箱地址。

对于CSS来说还有一种办法也可以让我们规避爬虫抓取,那就是利用CSS文本显示顺序的特点,比如以下:

<span class="obfuscate">moc.noitpecni@kcik</span>

其中CSS代码如下:

.obfuscate { unicode-bidi: bidi-override; direction: rtl; }

首先文本是被我们逆序的,如果要还原,在不借助JS的情况下可以通过CSS将其再次逆序,从而得到正确的文本,当然这个方法我试用下来有一点不足,那就是用户选择复制电子邮箱地址仍然是逆序的。

最后总结来看,在对抗垃圾邮件爬虫收集的方法上充分发挥了网友的聪明才智,也涌现出各种有才的实现,限于篇幅我也不一一介绍了,其实没有绝对的安全,最安全的办法就是没有电子邮箱地址,此话怎讲?那就是使用联系表单(Contact From),让需要和你联系的人直接通过表单和你发邮件,从而避免了电子邮件地址的公开,网上联系表单的开源代码也有一堆,我的博客最后考虑的方式也是这个,现在大家可以通过右上角“关于我”找到这个链接并给我发消息了。

如没特殊注明,文章均为狐灵科技原创,转载请注明  http://www.hulingweb.cn/hulianwang/355.html
  • 更多 +狐灵业务单元

    营销型网站建设 品牌创意网站 企业官方网站 上市公司网站 B2C电子商务网站 大型门户网站 专题活动网站 定制化电子商务 产品商城网站 移动手机电商网站 微信会员电商

  • 更多 +我们的优势

  • 更多 +关于狐灵

    狐灵致力于互联网品牌建设与网络营销,专业领域包括网站建设、电子商务、移动互联网营销、系统平台开发, 与其他网站建设及系统开发公司不同,我们的整合解决方案结合了狐灵网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,且不断评估并优化我们的方案,为客户提供一体化全方位的互联网品牌整合方案!

更多 +联系我们

服务热线:15523356218座机专线:023-68168040

业务 QQ传真:023-68168040

售后专线15082661954售后QQ:

渠道合作邮箱Foxl@hulingweb.cn

我们的认知

在我们的对手消耗大量的时间停留在碎片化的互联网设计或者程序实现的时候,我们已经开始把数字化品牌建设和网络传播进行了整合。只有通过整体的互联网品牌分析,帮助企业家们进行互联网品牌建设,并传播企业品牌,并围绕品牌树立品牌价值,提升企业与用户的互相交流,与用户品牌交互,让用户能找专业的方法去解决问题。传播品牌,激起消费者品牌意识,在这过程中创造价值,这是我们成功的秘诀,也是我们帮助用户成功的诀窍,更是成就一流品牌的一条直达线。

不能否认的是,建设网站,创造互联网品牌价值的过程,是一种在互联网上艺术的行为,但互联网跟涂鸦全然不同,企业的品牌价值并不体现在希望品牌成为某个这种艺术家的作品。互联网传播的对象是用户,用户拥有自己的文化体系,群落共性才是互联网传播根本,这种传播才是互联网创造价值的体现,这种价值的体现呈现多样。空洞的好看没有实质是网站建设的闹剧,网站如果不能激发品牌价值和网络营销和帮助用户,则是网站建设的悲哀,这样的网站没有灵魂!所以,网站建设运营,网络营销必须得得人心,有非常好的用户体验,能够解决问题和需求,能够为梦想者创造和传播品牌价值,最后创造价值,狐灵与你同行!


HI,Are you ready?

  • 公司名称*
  • 邮箱*
  • 姓名*电话*

您需要的服务*

现有网站改版
我需要做微信营销
建设全新的企业网站
要找长期合作公司,需要年度服务
我需要做购物商城
我需要做系统平台
我需要做营销型网站
我需要优化推广

您最关注的地方*

对功能要求比较高
对设计创意要求比较高
需要可以购物支付
搜索引擎排名

预算*

5千以下 1万以下 1-2万 2-3万 3-5万 5-10万 10万以上 大型项目需要招标
验证码 看不清?点击更换 看不清? 点击更换

售前售前
售后售后
留言微信
Top