欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python執(zhí)行js代碼的方法

 更新時間:2021年05月13日 15:20:08   作者:Python進階者  
現(xiàn)在為了防止反爬,前端使用的反爬技術(shù)比較多的是js代碼混淆。python作為爬蟲界的扛把子,免不了和js打交道,因此我們需要了解如何使用Python執(zhí)行js代碼

什么是js代碼混淆?

正常代碼

我們現(xiàn)在看一段js代碼,代碼邏輯很簡單,就是拼接時間返回。

function formatDate(now) {
    var now = new Date(1230999938);
    var year=now.getFullYear();
    var month=now.getMonth()+1;
    var date=now.getDate();
    var hour=now.getHours();
    var minute=now.getMinutes();
    var second=now.getSeconds();
    return year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second;
}

    運行一下這段代碼,如下圖所示。

混淆代碼

我隨便找了個在線的js代碼混淆網(wǎng)站。

js代碼

function formatDate(mz1){var KkkGDiH2=new window["\x44\x61\x74\x65"](1230999938);var tsk3=KkkGDiH2['\x67\x65\x74\x46\x75\x6c\x6c\x59\x65\x61\x72']();var YMreyP4=KkkGDiH2['\x67\x65\x74\x4d\x6f\x6e\x74\x68']()+1;var Ozo5=KkkGDiH2['\x67\x65\x74\x44\x61\x74\x65']();var QMYEc$eD6=KkkGDiH2['\x67\x65\x74\x48\x6f\x75\x72\x73']();var JfXVV_Akq7=KkkGDiH2['\x67\x65\x74\x4d\x69\x6e\x75\x74\x65\x73']();var $mP8=KkkGDiH2['\x67\x65\x74\x53\x65\x63\x6f\x6e\x64\x73']();return tsk3+"\x2d"+YMreyP4+"\x2d"+Ozo5+" "+QMYEc$eD6+"\x3a"+JfXVV_Akq7+"\x3a"+$mP8

    上面這個真的不是我瞎寫的,混淆之后就是這樣子的,不信看圖片。

可能我們會有個疑問,js代碼都成這玩意了,還能執(zhí)行嗎? 答案是肯定的。即使js代碼非常亂,但還是可以執(zhí)行的,結(jié)果跟上面的是一樣的。

這就造成了一個問題,我們在做爬蟲時,如果需要,多多少少可能都要研究一下js代碼,然后進行js解密一下,但是,但是,要是代碼都混淆成了這了,還怎么解?

一點邏輯都看不通了,基本上不可用Python按照js邏輯重寫出來了...

很巧,小編也是卡在這里...后來我就想,要是Python能執(zhí)行js代碼就好了,不用管函數(shù)里面的邏輯了,只拿函數(shù)返回值就好了。

Python第三方包Execjs

可能是吧,不止我一個人遇到了這種情況,所以大佬們就開發(fā)出來這種工具包,用于執(zhí)行js代碼。

安裝

在安裝之前,需要有node環(huán)境,這里就不舉栗子了,下一步下一步就好了。

pip3 install PyExecJS

執(zhí)行js

注:由于上述js代碼會生成window對象,并不能直接執(zhí)行成功,需要額外的其他輔助,這里簡單的舉一下其他例子。

正常js代碼

function add(x, y) {
   return x + y;
}

Python執(zhí)行js代碼

import execjs

ctx = execjs.compile("""
function add(x, y) {
  return x + y;
}
""")
print(ctx.call("add", 1, 2))

執(zhí)行結(jié)果如下圖所示:

混淆js代碼

function add(bi1,Pl$2){return bi1+Pl$2}

Python執(zhí)行混淆js代碼

import execjs

ctx = execjs.compile("""
function add(bi1,Pl$2){return bi1+Pl$2}
""")
print(ctx.call("add", 1, 2))

執(zhí)行結(jié)果如下圖所示:

可以看到,即使再混淆,只要執(zhí)行的是js代碼,都是沒啥問題的。

上述拼接時間返回的js混淆代碼也是可以執(zhí)行的,但是它多了一個window對象,需要node安裝jsdom才行,由于網(wǎng)絡設置有問題,實在是下載不了舉例子,實在是抱歉。

或者使用selenium打開游覽器執(zhí)行再返回也行,當然,速度更慢。

以上就是python執(zhí)行js代碼的方法的詳細內(nèi)容,更多關于python執(zhí)行js代碼的資料請關注腳本之家其它相關文章!

相關文章

  • 使用python+poco+夜神模擬器進行自動化測試實例

    使用python+poco+夜神模擬器進行自動化測試實例

    這篇文章主要介紹了使用python+poco+夜神模擬器進行自動化測試實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 詳解查看Python解釋器路徑的兩種方式

    詳解查看Python解釋器路徑的兩種方式

    這篇文章主要介紹了詳解查看Python解釋器路徑的兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Mac下使用HomeBrew安裝python3

    Mac下使用HomeBrew安裝python3

    這篇文章介紹了Mac下使用HomeBrew安裝python3的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Python?獲取今天任意時刻的時間戳的方法

    Python?獲取今天任意時刻的時間戳的方法

    本文主要介紹了Python?獲取今天任意時刻的時間戳的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧<BR>
    2022-06-06
  • Python繪制散點密度圖的三種方式詳解

    Python繪制散點密度圖的三種方式詳解

    散點密度圖是在散點圖的基礎上,計算了每個散點周圍分布了多少其他的點,并通過顏色表現(xiàn)出來。本文主要介紹了Python繪制散點密度圖的三種方式,需要的可以參考下
    2022-06-06
  • 深入理解python多線程編程

    深入理解python多線程編程

    進程是資源分配的最小單位,他是操作系統(tǒng)進行資源分配和調(diào)度運行的基本單位。通俗理解:一個正在運行的一個程序就是一個進程,本文重點給大家介紹python多線程編程的相關知識,感興趣的朋友一起看看吧
    2021-04-04
  • VSCode中Python環(huán)境配置、創(chuàng)建虛擬環(huán)境及pip的一些常用命令

    VSCode中Python環(huán)境配置、創(chuàng)建虛擬環(huán)境及pip的一些常用命令

    這篇文章主要給大家介紹了關于VSCode中Python環(huán)境配置、創(chuàng)建虛擬環(huán)境及pip的一些常用命令,Python環(huán)境的創(chuàng)建是在VSCode中很常見的一個需求,特別是當我們需要開發(fā)或者調(diào)試多個Python項目時,使用虛擬環(huán)境是一種好的方式,需要的朋友可以參考下
    2023-10-10
  • Python實現(xiàn)獲取系統(tǒng)臨時目錄及臨時文件的方法示例

    Python實現(xiàn)獲取系統(tǒng)臨時目錄及臨時文件的方法示例

    這篇文章主要介紹了Python實現(xiàn)獲取系統(tǒng)臨時目錄及臨時文件的方法,結(jié)合實例形式分析了Python文件與目錄操作相關函數(shù)與使用技巧,需要的朋友可以參考下
    2019-06-06
  • 詳細解讀Python字符串的使用與f-string

    詳細解讀Python字符串的使用與f-string

    這篇文章主要介紹了詳細解讀Python字符串的使用與f-string,在?Python?中,引號內(nèi)的任何內(nèi)容都是字符串,但是字符串也有很多的用法,需要的朋友一起來看看吧
    2023-04-04
  • 如何讓python程序正確高效地并發(fā)

    如何讓python程序正確高效地并發(fā)

    這篇文章主要介紹了如何讓python程序正確高效地并發(fā),文章圍繞主題的相關資料展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06

最新評論