Python爬蟲(chóng)如何應(yīng)對(duì)Cloudflare郵箱加密
最近寫(xiě)一個(gè)小爬蟲(chóng),需要拿到郵箱信息,發(fā)現(xiàn)拿不到,也不是ajax接口。最后查資料發(fā)現(xiàn)是被Cloudflare加密起來(lái)了,有加密肯定有解密。
通過(guò)大佬http://m.fzitv.net/article/189404.htm得到了加密算法。
參考大佬的原話搞起來(lái)就好:
檸之漠然:
這個(gè)解密方式就是從那段 js 代碼轉(zhuǎn)換過(guò)來(lái)的
其中最主要的一句話
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 位數(shù)字轉(zhuǎn)化成 16 進(jìn)制之后就是秘鑰, 接下來(lái)的每?jī)晌蛔址罔€異或操作之后轉(zhuǎn)成16進(jìn)制, 然后轉(zhuǎn)換成字符
最后將所有解出來(lái)的字符拼成一起, 就得到郵箱 abc@abc.com 了
js 這邊是用 urlencode 的方式
下面是復(fù)現(xiàn)的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)
}
然后通過(guò)python調(diào)用js完美搞定:
import execjs
def get_js():
# f = open("./../js/my.js", 'r', encoding='utf-8') # 打開(kāi)JS文件
f = open("./jiemi.js", 'r', encoding='utf-8') # 打開(kāi)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)) #調(diào)用js方法 第一個(gè)參數(shù)是JS的方法名,后面的data和key是js方法的參數(shù)
if __name__ == '__main__':
print(get_des_psswd(e='30515253705152531e535f5d'))
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
tensorflow從ckpt和從.pb文件讀取變量的值方式
這篇文章主要介紹了tensorflow從ckpt和從.pb文件讀取變量的值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
python 實(shí)現(xiàn)turtle畫(huà)圖并導(dǎo)出圖片格式的文件
今天小編就為大家分享一篇python 實(shí)現(xiàn)turtle畫(huà)圖并導(dǎo)出圖片格式的文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
使用matlab 判斷兩個(gè)矩陣是否相等的實(shí)例
這篇文章主要介紹了使用matlab 判斷兩個(gè)矩陣是否相等的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
Python數(shù)據(jù)的標(biāo)準(zhǔn)輸出與格式化輸出
這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)的標(biāo)準(zhǔn)輸出與格式化輸出的相關(guān)資料,和大多數(shù)語(yǔ)言一樣,Python也是用print()函數(shù)來(lái)進(jìn)行輸出,需要的朋友可以參考下2023-08-08
django 認(rèn)證類配置實(shí)現(xiàn)
本文主要介紹了django 認(rèn)證類配置實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11

