网页抓取 加密html(Python实现通过这位大神的解决思路写一个解密电子邮箱的函数)

优采云 发布时间: 2021-10-03 16:03

  网页抓取 加密html(Python实现通过这位大神的解决思路写一个解密电子邮箱的函数)

  1、问题的根源

  在数据采集的过程中,往往需要采集各种*敏*感*词*,包括邮箱地址。一些未加防卫的网站邮箱地址可以直接从网页源码中获取,有些网站对爬虫稍加防范,会将邮件中的@符号替换为#号:

  

  在我最近的工作中,我遇到了一种以前从未遇到过的电子邮件加密方法。在查看元素时可以获得正确的数据:

  

  在查看网页源代码时,还可以定位到对应的元素:

  

  但是从上图可以发现,它对应的是显示邮件的位置,并且显示了一个“[email protected]”链接。让我们检查源代码:

  

  这个用于显示电子邮件的字段与其他文本不同。如果是非邮件数据,则没有链接;如果是邮件数据,则通过这个链接在网页前端显示数据。

  2、解决方案

  经过一番搜索,在百度知道中找到了它的原理和解决方法:

  

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

  3、Python 实现

  通过这位大神的解决方案,我们可以快速使用Python编写一个解密电子邮件的函数。

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

  

  出于隐私考虑,这里使用了百度知道上公开的邮箱地址的加密字符串

  import re

from urllib.parse import unquote

email_str = '71121003141403311a140210051e5f121e1c'

  然后将此加密数据成对拆分为一个列表:

  email_list = re.findall(r'.{2}',email_str)

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

  key = email_list[0]

  定义一个空列表来存储十六进制 XOR 运算的结果:

  ll = []

  遍历剩余的加密字符串,遍历过程中与key进行异或运算,将结果加入到ll列表中:

   for e in email_list[1:]:

# 对十六进制进行异或运算

r = hex(int(key,16) ^ int(e,16))

ll.append(r)

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

   # 拼接运算后的字符串

a = ''.join(ll)

# URL解码字符串

email = unquote(a.replace('0x','%'))

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

  

  是不是很简单?

  文章第一个人微信公众号和博客:/archives/269.html

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线