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 相关文章推荐
python使用正则表达式分析网页中的图片并进行替换的方法
Mar 26 Python
关于Python中空格字符串处理的技巧总结
Aug 10 Python
浅谈Django REST Framework限速
Dec 12 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
pandas.DataFrame的pivot()和unstack()实现行转列
Jul 06 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
Nov 20 Python
节日快乐! Python画一棵圣诞树送给你
Dec 24 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
Mar 23 Python
Tensorflow中的降维函数tf.reduce_*使用总结
Apr 20 Python
python连接mysql数据库并读取数据的实现
Sep 25 Python
用60行代码实现Python自动抢微信红包
Feb 04 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 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+DBM的同学录程序(1)
2006/10/09 PHP
PHP实现数据分页显示的简单实例
2016/05/26 PHP
php简单压缩css样式示例
2016/09/22 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
Laravel学习教程之本地化模块
2017/08/18 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
2018/05/28 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
js模仿windows桌面图标排列算法具体实现(附图)
2013/06/16 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
JavaScript函数详解
2015/02/27 Javascript
JS验证图片格式和大小并预览的简单实例
2016/10/11 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
详解JavaScript 中 if / if...else...替换方式
2018/07/15 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
Django操作session 的方法
2020/03/09 Python
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
毕业生个人求职信范例分享
2013/12/17 职场文书
2014年医院工作总结
2014/11/20 职场文书
2014年内勤工作总结
2014/11/24 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
Java8中接口的新特性使用指南
2021/11/01 Java/Android
7个关于Python的经典基础案例
2021/11/07 Python
一文搞懂MySQL索引页结构
2022/02/28 MySQL
Python写情书? 10行代码展示如何把情书写在她的照片里
2022/04/21 Python