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 相关文章推荐
使用PyInstaller将Python程序文件转换为可执行程序文件
Jul 08 Python
python连接mysql实例分享
Oct 09 Python
Python用户推荐系统曼哈顿算法实现完整代码
Dec 01 Python
python调用系统ffmpeg实现视频截图、http发送
Mar 06 Python
在python中利用numpy求解多项式以及多项式拟合的方法
Jul 03 Python
django实现web接口 python3模拟Post请求方式
Nov 19 Python
Python将列表中的元素转化为数字并排序的示例
Dec 25 Python
python opencv进行图像拼接
Mar 27 Python
Python Mock模块原理及使用方法详解
Jul 07 Python
jupyter notebook更换皮肤主题的实现
Jan 07 Python
python glom模块的使用简介
Apr 13 Python
Python实现打乒乓小游戏
Sep 25 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蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
php xml常用函数的集合(比较详细)
2013/06/06 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
PHP实现的curl批量请求操作示例
2018/06/06 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
根据json字符串生成Html的一种方式
2013/01/09 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
jQuery限制图片大小的方法
2016/05/25 Javascript
JS弹出窗口插件zDialog简单用法示例
2016/06/12 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
详解Vue开发微信H5微信分享签名失败问题解决方案
2018/08/09 Javascript
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
js获取form表单中name属性的值
2019/02/27 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
Python基于Floyd算法求解最短路径距离问题实例详解
2018/05/16 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
财务会计专业毕业生自荐信
2013/10/19 职场文书
自荐信怎么写好
2013/11/11 职场文书
公司建议书怎么写
2014/05/15 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
2019安全宣传标语大全
2019/08/14 职场文书
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫
Java获取字符串编码格式实现思路
2022/09/23 Java/Android