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实现二维码扫码自动登录淘宝
Dec 27 Python
Python正则表达式如何进行字符串替换实例
Dec 28 Python
图解Python变量与赋值
Apr 03 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
Pandas中DataFrame的分组/分割/合并的实现
Jul 16 Python
在django模板中实现超链接配置
Aug 21 Python
python定时任务 sched模块用法实例
Nov 04 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 Python
MATLAB数学建模之画图汇总
Jul 16 Python
一起来学习Python的元组和列表
Mar 13 Python
详解PyTorch模型保存与加载
Apr 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
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
PHP递归算法的简单实例
2019/02/28 PHP
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
[02:40]2014DOTA2 国际邀请赛中国区预选赛 四大豪门抵达华西村
2014/05/23 DOTA
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
python实现自动登录人人网并访问最近来访者实例
2014/09/26 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
Python如何将字符串转换为日期
2020/07/31 Python
python 调用API接口 获取和解析 Json数据
2020/09/28 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
软件部经理岗位职责范本
2014/02/25 职场文书
市场拓展计划书
2014/05/03 职场文书
校园广播稿100字
2014/10/06 职场文书
2014年话务员工作总结
2014/11/19 职场文书
单位证明范文
2015/06/18 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技