Python爬虫如何应对Cloudflare邮箱加密?
execjs 是一个用于在 Python 中运行 JavaScript 代码的库。要解决这个问题,你需要安装这个库,Python实现Cloudflare邮箱数据解密文章摘自: https://www.cnblogs.com
1.pip安装相关模块:
pip install PyExecJS
2.分析Cloudflare解析的站点中邮箱加密算法(以下JS代码保存文件名称为 encode.js)
function jiemi(val) {
for (e = '', r = '0x' + val.substr(0, 2) | 0, n = 2; val.length - n; n += 2) e += '%' + ('0' + ('0x' + val.substr(n, 2) ^ r).toString(16)).slice(-2); return decodeURIComponent(e)
}
3. Python对Cloudflare邮箱加密数据进行解密
'''
DES:Python爬虫如何应对Cloudflare邮箱加密
'''
import execjs
def get_js():
f = open("./encode.js", 'r', encoding='utf-8') # 打开JS文件
line = f.readline()
htmlstr = ''
while line:
htmlstr = htmlstr+line
line = f.readline()
return htmlstr
def get_des_psswd(e):
js_str = get_js()
ctx = execjs.compile(js_str) # 加载JS文件
return (ctx.call('jiemi', e)) # 调用js方法 第一个参数是JS的方法名,后面的data和key是js方法的参数
if __name__ == '__main__':
# <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="42232c36232021737071767774757a7b02252f232b2e6c212d2f">[email protected]</a></td>
data_cfemail="42232c36232021737071767774757a7b02252f232b2e6c212d2f" # antabc123456789@gmail.com
print(get_des_psswd(data_cfemail))
input("------ 请按任意键退出!------")

浙公网安备 33010602011771号