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

优采云 发布时间: 2022-01-10 11:13

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

  1、问题的根源

  在数据采集的过程中,经常需要采集各种*敏*感*词*,包括邮箱地址。一些毫无戒心的网站的邮件地址可以直接从网页的源码中获取,而一些对爬虫稍微了解一点的网站会替换@使用 # 号登录电子邮件:

  

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

  

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

  

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

  

  此显示电子邮件地址的字段不同于显示其他文本的结构。如果是非email邮箱数据,则没有链接;如果是email地址数据,则通过这个链接将数据显示在网页的前端。

  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]复制代码

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

  ll = []复制代码

  遍历剩余的加密字符串,与遍历的密钥进行异或,并将结果添加到 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

  欢迎来到我的个人博客:查看更多Python应用文章

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线