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日期操作学习笔记
Oct 07 Python
使用python实现接口的方法
Jul 07 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
Feb 26 Python
python字符串string的内置方法实例详解
May 14 Python
Pandas+Matplotlib 箱式图异常值分析示例
Dec 09 Python
Python 实现加密过的PDF文件转WORD格式
Feb 04 Python
Python标准库json模块和pickle模块使用详解
Mar 10 Python
Python如何使用27行代码绘制星星图
Jul 20 Python
Python容器类型公共方法总结
Aug 19 Python
python 用struct模块解决黏包问题
Nov 07 Python
用60行代码实现Python自动抢微信红包
Feb 04 Python
python中subplot大小的设置步骤
Jun 28 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
在DC的漫画和电影中,蝙蝠侠的宿敌,小丑的真名是什么?
2020/04/09 欧美动漫
PHP.MVC的模板标签系统(五)
2006/09/05 PHP
PHP屏蔽过滤指定关键字的方法
2014/11/03 PHP
php去除字符串中空字符的常用方法小结
2015/03/17 PHP
php数据访问之增删改查操作
2016/05/09 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
分页栏的web标准实现
2011/11/01 Javascript
javascript完美拖拽的实现方法
2013/09/29 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
2014/06/20 Javascript
浅谈javascript面向对象程序设计
2015/01/21 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
基于iview的router常用控制方式
2019/05/30 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
pygame游戏之旅 载入小车图片、更新窗口
2018/11/20 Python
python模块常用用法实例详解
2019/10/17 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
python中如何设置代码自动提示
2020/07/15 Python
python 利用toapi库自动生成api
2020/10/19 Python
python实现简单的学生管理系统
2021/02/22 Python
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
维也纳通行证:Vienna PASS
2019/07/18 全球购物
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
化工专业大学生职业生涯规划书
2014/01/14 职场文书
党风廉正建设责任书
2015/01/29 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
会议简报格式范文
2015/07/20 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书
Node实现搜索框进行模糊查询
2021/06/28 Javascript