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 urlopen()函数 示例分享
Jun 12 Python
进一步了解Python中的XML 工具
Apr 13 Python
python 信息同时输出到控制台与文件的实例讲解
May 11 Python
python实现微信防撤回神器
Apr 29 Python
python读取并写入mat文件的方法
Jul 12 Python
在python 中split()使用多符号分割的例子
Jul 15 Python
python定位xpath 节点位置的方法
Aug 27 Python
基于python解线性矩阵方程(numpy中的matrix类)
Oct 21 Python
基于Python中isfile函数和isdir函数使用详解
Nov 29 Python
基于K.image_data_format() == 'channels_first' 的理解
Jun 29 Python
python中判断文件结束符的具体方法
Aug 04 Python
Python模拟登录和登录跳转的参考示例
Oct 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
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
php数据序列化测试实例详解
2017/08/12 PHP
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
JS定义类的六种方式详解
2016/05/12 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
node.js实现登录注册页面
2017/04/08 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
2019/01/02 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
Django如何实现防止XSS攻击
2020/10/13 Python
Python图像读写方法对比
2020/11/16 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
英语专业毕业个人求职自荐信
2013/09/21 职场文书
群众路线党课主持词
2014/04/01 职场文书
社团活动总结报告
2014/06/27 职场文书
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript