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中的lstrip()方法使用简介
May 19 Python
Python中返回字典键的值的values()方法使用
May 22 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
Jun 22 Python
解决Pycharm运行时找不到文件的问题
Oct 29 Python
Python创建一个空的dataframe,并循环赋值的方法
Nov 08 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
Python numpy.zero() 初始化矩阵实例
Nov 27 Python
解析PyCharm Python运行权限问题
Jan 08 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 Python
TensorFlow2.0矩阵与向量的加减乘实例
Feb 07 Python
基于Django signals 信号作用及用法详解
Mar 28 Python
套娃式文件夹如何通过Python批量处理
Aug 23 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
用libTemplate实现静态网页的生成
2006/10/09 PHP
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
php读取纯真ip数据库使用示例
2014/01/26 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
js一组验证函数
2008/12/20 Javascript
jQuery 位置插件
2008/12/25 Javascript
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
javascript实现画不相交的圆
2015/04/07 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
jquery 给动态生成的标签绑定事件的几种方法总结
2018/02/24 jQuery
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
详解vue移动端项目的适配(以mint-ui为例)
2018/08/17 Javascript
Vue中多元素过渡特效的解决方案
2020/02/05 Javascript
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
Python守护进程用法实例分析
2015/06/04 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
2017/08/07 Python
Python OpenCV实现图片上输出中文
2018/01/22 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
急诊科护士自我鉴定
2013/10/14 职场文书
大三在校生电子商务求职信
2013/10/29 职场文书
函授教育个人学习的自我评价
2013/12/31 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
python基础详解之if循环语句
2021/04/24 Python