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中使用enumerate函数遍历元素实例
Jun 16 Python
Django框架中数据的连锁查询和限制返回数据的方法
Jul 17 Python
Python实现全角半角字符互转的方法
Nov 28 Python
python将字符串以utf-8格式保存在txt文件中的方法
Oct 30 Python
Python内置random模块生成随机数的方法
May 31 Python
Python的Tkinter点击按钮触发事件的例子
Jul 19 Python
利用jupyter网页版本进行python函数查询方式
Apr 14 Python
python 引用传递和值传递详解(实参,形参)
Jun 05 Python
python 对象真假值的实例(哪些视为False)
Dec 11 Python
python爬虫破解字体加密案例详解
Mar 02 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 Python
Python集合的基础操作
Nov 01 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 常用类整理
2009/12/23 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
Laravel 5框架学习之Eloquent 关系
2015/04/09 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
PHP获取页面执行时间的方法(推荐)
2016/12/10 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
JavaScript 基本概念
2015/01/20 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
vue实现购物车列表
2020/06/30 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
Linux下编译安装MySQL-Python教程
2015/02/02 Python
Python连接mysql数据库的正确姿势
2016/02/03 Python
Python爬虫框架Scrapy常用命令总结
2018/07/26 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
html5基础教程常用技巧整理
2013/08/20 HTML / CSS
Nº21官方在线商店:numeroventuno.com
2019/09/26 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
机械设计及其自动化求职推荐信
2014/02/17 职场文书
责任胜于能力演讲稿
2014/05/20 职场文书
运动会广播稿100字
2014/09/14 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
革命电影观后感
2015/06/18 职场文书
七年级写作指导之游记作文
2019/10/07 职场文书