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 相关文章推荐
改进Django中的表单的简单方法
Jul 17 Python
Python操作MySQL数据库的三种方法总结
Jan 30 Python
使用Python读取安卓手机的屏幕分辨率方法
Mar 31 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
Oct 14 Python
利用Python实现原创工具的Logo与Help
Dec 03 Python
python的turtle库使用详解
May 10 Python
详解Python绘图Turtle库
Oct 12 Python
Python连接字符串过程详解
Jan 06 Python
Python实现加密接口测试方法步骤详解
Jun 05 Python
Python3实现建造者模式的示例代码
Jun 28 Python
PyCharm+PyQt5+QtDesigner配置详解
Aug 12 Python
python not运算符的实例用法
Jun 30 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
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
用PHP制作静态网站的模板框架(二)
2006/10/09 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
JavaScript队列、优先队列与循环队列
2016/11/14 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
python基础教程之匿名函数lambda
2017/01/17 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
什么时候用assert
2015/05/08 面试题
深圳茁壮笔试题
2015/05/28 面试题
公务员职业生涯规划书范文  
2014/01/19 职场文书
电子信息科学专业自荐信
2014/01/30 职场文书
洗车工岗位职责
2014/03/15 职场文书
简单租房协议书
2014/04/09 职场文书
家长给学校的建议书
2014/05/15 职场文书
2014年保密工作总结
2014/11/22 职场文书
英语导游词
2015/02/13 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技