州的先生

破解爬虫过程中遇到的网页异或加密Email地址






1、问题来源

在数据采集过程中,经常有需要采集各种联系方式,其中就包括电子邮箱地址。一些毫不设防的网站的电子邮件地址可以直接从网页源码中获取到,而一些稍微有点防备爬虫意识的网站会将电子邮箱中的@符号替换为#号:

最近工作中,遇到一种之前从未遇到过的电子邮箱加密方式。在审查元素的时候能够获取到正确的数据:

查看网页源码的时候,也能够定位到相应的元素:

但是从上图中,可以发现,其对应于显示电子邮箱的位置,显示的是一个“[email protected]”的链接,我们查看一下源码:

这个显示电子邮箱的字段与显示其他文字的结构不一样,如果是非电子邮箱数据,则没有a链接;如果是电子邮箱数据,那么则是通过这个a链接在网页前端中显示出数据。

2、解决方法

通过一番搜索,在百度知道中发现了其原理和解决思路:

只是简单的异或运算加密,解密起来并不困难。

3、Python实现

通过这位大神的解决思路,我们可以很快速地使用Python写一个解密电子邮箱的函数。

首先提取出真实邮箱地址的加密数据:

处于隐私考虑,在此使用百度知道上公开的电子邮箱的加密字符串

然后将这个加密数据两两分割为一个列表:

提取出加密字符串的密钥,即字符串的前两个字符:

定义一个空列表,用于存储十六进制异或运算的结果:

对剩余的加密字符串进行遍历,在遍历中与密钥进行异或运算,结果添加到ll列表中:

接着对列表中的结果进行字符串拼接和替换:

这样,email的值就是加密字符串的真实电子邮箱地址:

是不是很简单?欢迎关注微信公众号:州的先生 交流讨论:)



州的先生 Zmister.com 版权所有丨转载请邮件联系授权后注明转自:http://zmister.com/archives/269.html
点赞

发表评论

电子邮件地址不会被公开。