Python爬虫如何应对Cloudflare邮箱加密


Posted in Python onJune 24, 2020

最近写一个小爬虫,需要拿到邮箱信息,发现拿不到,也不是ajax接口。最后查资料发现是被Cloudflare加密起来了,有加密肯定有解密。

通过大佬https://3water.com/article/189404.htm得到了加密算法。

参考大佬的原话搞起来就好:

柠之漠然:

这个解密方式就是从那段 js 代码转换过来的

其中最主要的一句话

for (e = ”, r = ‘0x' + a.substr(0, 2) | 0, n = 2; a.length ? n; n += 2) e += ‘%' + (‘0' + (‘0x' + a.substr(n, 2) ^ r).toString(16)).slice( ? 2);

前面的 2 位数字转化成 16 进制之后就是秘钥, 接下来的每两位字符跟秘钥异或操作之后转成16进制, 然后转换成字符

最后将所有解出来的字符拼成一起, 就得到邮箱 abc@abc.com 了

js 这边是用 urlencode 的方式

下面是复现的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)
}

然后通过python调用js完美搞定:

import execjs

def get_js():
 # f = open("./../js/my.js", 'r', encoding='utf-8') # 打开JS文件
 f = open("./jiemi.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__':
 print(get_des_psswd(e='30515253705152531e535f5d'))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Ruby使用eventmachine为HTTP服务器添加文件下载功能
Apr 20 Python
Python处理Excel文件实例代码
Jun 20 Python
python2.7实现FTP文件下载功能
Apr 15 Python
对numpy中轴与维度的理解
Apr 18 Python
Python基于FTP模块实现ftp文件上传操作示例
Apr 23 Python
python用plt画图时,cmp设置方法
Dec 13 Python
python基于C/S模式实现聊天室功能
Jan 09 Python
python实现诗歌游戏(类继承)
Feb 26 Python
在python中用url_for构造URL的方法
Jul 25 Python
Python将string转换到float的实例方法
Jul 29 Python
Python变量作用域LEGB用法解析
Feb 04 Python
Python内置函数及功能简介汇总
Oct 13 Python
python使用自定义钉钉机器人的示例代码
Jun 24 #Python
pytorch中的weight-initilzation用法
Jun 24 #Python
pytorch查看模型weight与grad方式
Jun 24 #Python
pytorch  网络参数 weight bias 初始化详解
Jun 24 #Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 24 #Python
python3.x中安装web.py步骤方法
Jun 23 #Python
python如何删除文件、目录
Jun 23 #Python
You might like
PHP实现的构造sql语句类实例
2016/02/03 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
JavaScript面试题大全(推荐)
2016/09/22 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
2020/03/04 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
Python 的 with 语句详解
2014/06/13 Python
在Python的web框架中中编写日志列表的教程
2015/04/30 Python
python实现PID算法及测试的例子
2019/08/08 Python
python多线程并发及测试框架案例
2019/10/15 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
python——全排列数的生成方式
2020/02/26 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
2020/03/13 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
人力资源管理专业学生自我评价
2013/11/20 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
滞留工资返还协议书
2014/10/19 职场文书
信访稳定工作汇报
2014/10/27 职场文书
招商银行收入证明
2015/06/17 职场文书
大学军训通讯稿
2015/07/18 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
毕业生自荐求职信书写的技巧
2019/08/26 职场文书