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 相关文章推荐
wxPython定时器wx.Timer简单应用实例
Jun 03 Python
使用pyecharts无法import Bar的解决方案
Apr 23 Python
老生常谈Python startswith()函数与endswith函数
Sep 08 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
Jul 13 Python
Python字典的核心底层原理讲解
Jan 24 Python
用vue.js组件模拟v-model指令实例方法
Jul 05 Python
python3实现斐波那契数列(4种方法)
Jul 15 Python
Python实现微信小程序支付功能
Jul 25 Python
给大家整理了19个pythonic的编程习惯(小结)
Sep 25 Python
python实现布隆过滤器及原理解析
Dec 08 Python
python 日志 logging模块详细解析
Mar 31 Python
python实现简易版学生成绩管理系统
Jun 22 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
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
php+croppic.js实现剪切上传图片功能
2018/08/14 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
javascript concat数组累加 示例
2009/09/03 Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
2011/05/05 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
微信小程序用户授权,以及判断登录是否过期的方法
2019/05/10 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
[02:21]2018完美盛典章节片——初心
2018/12/17 DOTA
Python中的默认参数详解
2015/06/24 Python
Python实现计算最小编辑距离
2016/03/17 Python
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
英国羊绒服装购物网站:Pure Collection
2018/10/22 全球购物
Mountain Hardwear官网:攀岩服装和户外装备
2019/09/26 全球购物
优秀的计算机专业求职信范文
2013/12/27 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
优秀实习生感言
2014/03/01 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
应聘会计求职信
2014/06/11 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
2016年校园植树节广播稿
2015/12/17 职场文书
Python3中PyQt5简单实现文件打开及保存
2021/06/10 Python
Nginx+Tomcat负载均衡多实例详解
2022/04/11 Servers