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进行基础的函数式编程的教程
Mar 31 Python
python模块之StringIO使用示例
Apr 08 Python
python实现简易内存监控
Jun 21 Python
Python3的高阶函数map,reduce,filter的示例详解
Jul 23 Python
Django 响应数据response的返回源码详解
Aug 06 Python
python基于pdfminer库提取pdf文字代码实例
Aug 15 Python
手把手教你Python yLab的绘制折线图的画法
Oct 23 Python
Python3 把一个列表按指定数目分成多个列表的方式
Dec 25 Python
Python基于jieba, wordcloud库生成中文词云
May 13 Python
为什么说python更适合树莓派编程
Jul 20 Python
python 删除系统中的文件(按时间,大小,扩展名)
Nov 19 Python
python如何读取和存储dict()与.json格式文件
Jun 25 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使用正则表达式清除超链接文本
2013/11/12 PHP
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
认识less和webstrom的less配置方法
2017/08/02 Javascript
js实现图片粘贴上传到服务器并展示的实例
2017/11/08 Javascript
JavaScript实现异步图像上传功能
2018/07/12 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
Python 备份程序代码实现
2017/03/06 Python
Python中read()、readline()和readlines()三者间的区别和用法
2017/07/30 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
浅析Python数据处理
2018/05/02 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
python实现按关键字筛选日志文件
2019/12/24 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
全球在线商店:BerryLook
2019/04/14 全球购物
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
影视动画专业个人的自我评价
2013/12/31 职场文书
家电业务员岗位职责
2014/03/10 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
写给老师的感谢信
2015/01/20 职场文书
钱学森电影观后感
2015/06/04 职场文书
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android