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 相关文章推荐
pygame加载中文名mp3文件出现error
Mar 31 Python
python 中的int()函数怎么用
Oct 17 Python
python递归实现快速排序
Aug 18 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
Python设计模式之职责链模式原理与用法实例分析
Jan 11 Python
Python学习笔记之迭代器和生成器用法实例详解
Aug 08 Python
python datetime中strptime用法详解
Aug 29 Python
python sorted函数原理解析及练习
Feb 10 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 Python
Python 防止死锁的方法
Jul 29 Python
Python3.8官网文档之类的基础语法阅读
Sep 04 Python
Python用tkinter实现自定义记事本的方法详解
Mar 31 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水印
2007/03/16 PHP
PHP-redis中文文档介绍
2013/02/07 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
js replace正则表达式应用案例讲解
2013/01/17 Javascript
jquery中加载图片自适应大小主要实现代码
2013/08/23 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
使用phantomjs进行网页抓取的实现代码
2014/09/29 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
Javascript随机标签云代码实例
2016/06/21 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
python编码最佳实践之总结
2016/02/14 Python
django的model操作汇整详解
2019/07/26 Python
python写程序统计词频的方法
2019/07/29 Python
django中media媒体路径设置的步骤
2019/11/15 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
opencv python如何实现图像二值化
2020/02/03 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
如何实现jdbc性能优化
2012/07/30 面试题
数控加工专业毕业生自荐信
2013/09/27 职场文书
银行委托书范本
2014/09/28 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
电影圆明园观后感
2015/06/03 职场文书
孔繁森观后感
2015/06/10 职场文书
2015年办税服务厅工作总结
2015/07/23 职场文书