python破解email-protected(爬虫那点事)
部分网站采用了百度CDN的邮箱加密技术,情况如下:
像这种情况便需要解密,全局搜索email-protection,发现解密js文件为email-decode.min.js,代码逻辑大致如下:
- href属性#后内容和“data-cfemail”值都可以用以解密,可以随便用一个
- 先将字符串前两个字符从十六进制转换为十进制,作为key
- 之后将剩下的字符两两转为十进制,并与key异或,异或结果为十进制数,转为单个字符
- 所有字符拼接在一起即为解密后的信息
python代码如下:
# t1 = "87ecebe6f2f4a9e6ecf3e8f5eee2f4c7f7efe6f5eae6ece8eba9f2e9eeaae1f5e2eee5f2f5e0a9e3e2"
t1 = "6a01060b1f19440b011e0518030f192a1a020b18070b010506441f0403470c180f03081f180d440e0f"
# 十六进制转十进制
def ox2dec(ox:str):
return int(ox,16)
def decode(to_decode:str):
decode = []
key = ox2dec(to_decode[:2]) # 前两位为密钥
data = []
for i in range(2,len(to_decode),2):
to_decode_i = ox2dec(to_decode[i:i+2])
# print(to_decode_i,key)
decode_i = to_decode_i^key # 十进制异或会先转二进制异或,结果再转回十进制
decode.append(chr(decode_i)) # 十进制数转字符
return "".join(decode)
print(decode(t1))
最后,请合理合法爬取!