javascript
助力小白常见JS逆向乱杀喂饭教程——Url加密
專欄作者:戰(zhàn)俘巡航,爬蟲工程師,具有豐富的Python數(shù)據(jù)采集經(jīng)驗(yàn)。
最近,讀者希望公眾號(hào)能出一些JS逆向的干貨教程,所以,安排!
首先不知道能寫多少簡(jiǎn)單易懂的逆向內(nèi)容供小白們吸收學(xué)習(xí),目前先不講混淆相關(guān)的哈,先姑且稱這是V0.1的喂飯教程!Js沒(méi)基礎(chǔ)的補(bǔ)一補(bǔ)基礎(chǔ),瀏覽器調(diào)試不會(huì)的看之前的文章里面推薦的瀏覽器介紹哈,別問(wèn),問(wèn)就是我的收藏也沒(méi)了。
01
掃盲階段
問(wèn)1:加密干啥用的?
答:不防你防誰(shuí)。
?
問(wèn)2:加密用在哪里?
答:看文章下面?區(qū)分下加密出現(xiàn)的地方。
?
問(wèn)3:加密難嗎?
答:如果你是一個(gè)合格的pythoner就覺(jué)得不難(只管調(diào)用,不管實(shí)現(xiàn)原理)。
?
問(wèn)4:加密有哪些?
答:對(duì)稱加密和非對(duì)稱加密(就像只有男人和女人一樣),后面會(huì)詳細(xì)說(shuō)的。
?
問(wèn)5:加密需要js底子嗎?
答:人家js寫的,你會(huì)的話總沒(méi)錯(cuò)(技多不壓身,但是壓腦子)。
?
.......
當(dāng)然,還需簡(jiǎn)單區(qū)分下加密出現(xiàn)的地方(只限于小白級(jí)別):
02
Url加密
本文先從Url加密開始講哈,Url加密常見于訪問(wèn)一級(jí)界面后,二級(jí)界面跳轉(zhuǎn)詳情頁(yè)時(shí)url進(jìn)行加密,可以用selenium進(jìn)行爬取,但是慢!舉個(gè)栗子(base64工具網(wǎng)站解密下):
aHR0cDovL2dnenkuendmd2IudGouZ292LmNuL3F1ZXJ5Q29udGVudC1qeXh4LmpzcHg/dGl0bGU9JmluRGF0ZXM9JmV4dD0mZXh0MT0mb3JpZ2luPSZjaGFubmVsSWQ9ODMmYmVnaW5UaW1lPSZlbmRUaW1lPQ==首頁(yè)可以看到都是正常的網(wǎng)址:
然后我們點(diǎn)擊一頁(yè)進(jìn)入瞧一瞧,看一看:
哎哎哎,怎么就成這個(gè)亞子了???
?
經(jīng)過(guò)反復(fù)查看之后,你肯定覺(jué)得:這就是加密(tnnd,遇到反爬了,俺也不會(huì)呀)!!!
?
這種情況就url加密,熟悉了網(wǎng)站之后,我們?cè)賮?lái)猜一下他是在哪里進(jìn)行加密的。為什么要進(jìn)行這個(gè)分析,其實(shí)是為了判斷它是在html里面加密的,還是在xhr請(qǐng)求的時(shí)候進(jìn)行加密的。
?
來(lái)了來(lái)了!!!注意注意!!!
1.?首先進(jìn)入網(wǎng)站首頁(yè)的時(shí)候很慢,你去查看其他的網(wǎng)站,比如百度之類的就很快,這里就比較可疑。
2.?點(diǎn)擊詳情頁(yè)的時(shí)候很快,先當(dāng)作正常操作。
3.?查看下詳情頁(yè)在F12面板中的請(qǐng)求信息,發(fā)現(xiàn)在type欄是document,initator是Other,其實(shí)到這里一般有點(diǎn)經(jīng)驗(yàn)的就看出來(lái)了在哪里進(jìn)行的加密。
?
這個(gè)時(shí)候怎么辦呢,先回去看看主頁(yè)面的標(biāo)題列表。
在url的父級(jí)元素以及和url這個(gè)a標(biāo)簽元素中并沒(méi)有出現(xiàn) js函數(shù),下面來(lái)看解決辦法:
是不是有個(gè)remove,挨個(gè)刪,刪一個(gè)點(diǎn)一下網(wǎng)站,哪個(gè)刪了不能跳轉(zhuǎn)了那就是到位置上了,但是明眼人一眼就看出來(lái)了click,remove后面跟著一個(gè)CAXX...js:2這樣的,點(diǎn)擊下click,會(huì)出來(lái)一堆元素,再點(diǎn)下a標(biāo)簽后面的VMXX:1,就能進(jìn)入加密函數(shù)。
?
進(jìn)入之后看到了一堆js代碼,先格式化下。
點(diǎn)擊花括號(hào),開始分析代碼,不懂js沒(méi)關(guān)系,我?guī)湍恪?/p>
?
大體上好像是這樣,我們?cè)?2行下斷點(diǎn)看看(新手建議16行下斷點(diǎn)一行行的進(jìn)行調(diào)試哈,方便看的懂邏輯)。
右鍵點(diǎn)擊行號(hào),出現(xiàn)藍(lán)色箭頭代表成功(更新的谷歌或者其他瀏覽器略顯不同),點(diǎn)擊網(wǎng)頁(yè)上的文章就能看到這邊已經(jīng)斷下,并且32行網(wǎng)上已經(jīng)給出了值。
不出提示的,在這個(gè)界面按兩下ctrl就能出來(lái)了,uuu就是網(wǎng)站的鏈接。到此呢,我們已經(jīng)成功找到了這個(gè)網(wǎng)站的加密,并且知道了是AES加密,在上面的圖片中也分析了AES加密的結(jié)構(gòu):
CryptoJS.AES.encrypt(加密內(nèi)容,密鑰){ 模式:?CryptoJS.mode.xxxx, 填充:?CryptoJS.pad.xxxx }?
你以為我為了湊字?jǐn)?shù)來(lái)分析下這個(gè)結(jié)構(gòu)嗎,不不不,在這個(gè)結(jié)構(gòu)中可以提取出一些東西,比如:
?
這些東西有什么用呢?這些東西叫做特征碼,請(qǐng)?jiān)俅芜M(jìn)入F12界面:
?
?
然后把上面的特征碼放在搜索欄中搜索下,看看結(jié)果:
相信到這里你已經(jīng)可以手撕AES加密了(手動(dòng)滑稽~)
?
問(wèn):怎么實(shí)現(xiàn)這樣的加密?
答:會(huì)js的套個(gè)js 的AES加密庫(kù)。
?
問(wèn):不會(huì)js怎么辦?
答:上GitHub,上面的大佬早已經(jīng)封裝好了。請(qǐng)盡情調(diào)用吧~
Ps:實(shí)現(xiàn)了加密,爬人家一頁(yè)兩頁(yè)的就行了哈,來(lái)學(xué)技能的不是讓你搞人家站的。
推薦閱讀 誤執(zhí)行了rm -fr /*之后,除了跑路還能怎么辦?!程序員必備58個(gè)網(wǎng)站匯總大幅提高生產(chǎn)力:你需要了解的十大Jupyter Lab插件總結(jié)
以上是生活随笔為你收集整理的助力小白常见JS逆向乱杀喂饭教程——Url加密的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 安利十二个常用的IPython魔法命令
- 下一篇: 老师吴恩达,身家又增20亿!