賀州網(wǎng)絡(luò)推廣青島seo建站
一、JS逆向
解釋:在我們爬蟲的過程中經(jīng)常會遇到參數(shù)被加密的情況,這樣只有先在前端搞清楚加密參數(shù)是怎么生成的才能繼續(xù)我們的爬蟲,而且此時我們還需要用python去執(zhí)行這個加密的過程。本文主要講怎么在瀏覽器調(diào)試JS,以及Python執(zhí)行JS
1.瀏覽器調(diào)試JS
1.1 全局搜索
解釋:我們想要找到被加密的內(nèi)容,肯定先從參數(shù)入手,比如頁面提交字段{"passwd":"5d114e4f6bdf59e7b9ca20704f1032ef54753c1969b452ba03fea1773c1a49ed6c1e72fb811bd3baccdd29e975e32d4d82f7f215a42ad4b56d561eb6eeb4c3f069936bd58a2c4dadac05fb107c2c94bfbc8efad9cb3649f6581c3d9b228ee1482e7bf39a349eed16dc0fdbb979294c5f73e2c37e489c3fde630ea35dcbe7979b"}
這種一看就是加密了,此時我們打開F12開發(fā)者工具,選擇選項卡網(wǎng)絡(luò),刷新,Ctrl-F搜索關(guān)鍵詞passwd
,之后就要靠自己了,點開文件依次查找,找到有用的信息,再卡斷點
1.2 斷點
解釋:假設(shè)只是你找到了被加密內(nèi)容調(diào)用的位置,此時需要通過加斷點運(yùn)行去驗證自己的設(shè)想,此時如下圖1,先跳去來源面板,之后我們通過圖二示例就可以加斷點了,圖三是(刷新頁面或觸發(fā)該代碼)程序運(yùn)行到斷點處時我們要選擇的模式其為一行一行運(yùn)行代碼(這個比較常用),圖四標(biāo)準(zhǔn)了我們斷點運(yùn)行后,我們能看到的一些局部變量的值
2.Python執(zhí)行JS
安裝:pip install pyexecjs
注意:這個庫可能你電腦上有node或者其它js環(huán)境,而且執(zhí)行的js代碼,不能包含瀏覽器里面特有的一些元素,比如window,document等等(我們用python運(yùn)行js一般也就是計算,遇到這些瀏覽器元素刪除即可)
解釋:這個庫能夠讓python執(zhí)行js代碼,下面為簡單演示
簡單例子:
import execjs# compile里面寫js代碼
c = execjs.compile('''function hello(str){return "hello" + str;}''')
# call第一個參數(shù)是函數(shù)名,后面的參數(shù)對應(yīng)函數(shù)里面的參數(shù),比如這里hello(str)的參數(shù)str
d = c.call('hello','jack')
print(d) # hellojack
讀取多個js文件:
import execjsprint(execjs.get().name)
with open('./js/test.js', 'r') as f:jscontent = f.read()with open('./js/password.js', 'r') as f:jscontent += f.read()# jscontent = jscontent + jscontent1
ctx = execjs.compile(jscontent)d = ctx.call('fuction', 'run')
print(d)