91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是js代碼混淆

python爬蟲(chóng)知識(shí)分享 ? 來(lái)源:python爬蟲(chóng)知識(shí)分享 ? 作者:python爬蟲(chóng)知識(shí)分享 ? 2022-03-31 16:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

為什么要引出Python執(zhí)行js這個(gè)問(wèn)題?

都說(shuō)術(shù)業(yè)有專攻,每個(gè)語(yǔ)言也都有自己的長(zhǎng)處和短處。在爬蟲(chóng)方向,Python絕對(duì)是扛把子,近幾年隨著AI的火爆,需要各種各樣的數(shù)據(jù),所以,爬蟲(chóng)需求也跟著水漲船高起來(lái)。

做爬蟲(chóng)的當(dāng)然是爬的爽,但是估計(jì)人家后臺(tái)在罵街,畢竟誰(shuí)都不希望自己的數(shù)據(jù)被弄走,所以后臺(tái)反爬技術(shù)也在快速提升,一攻一防就這么在拉鋸著。

現(xiàn)在為了防止反爬,前端使用的反爬技術(shù)比較多的是js代碼混淆。

什么是js代碼混淆?

正常代碼

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

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;
}

混淆代碼

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

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

這就造成了一個(gè)問(wèn)題,我們?cè)谧雠老x(chóng)時(shí),如果需要,多多少少可能都要研究一下js代碼,然后進(jìn)行js解密一下,但是,但是,要是代碼都混淆成了這了,還怎么解?

一點(diǎn)邏輯都看不通了,基本上不可用Python按照js邏輯重寫(xiě)出來(lái)了...

后來(lái)我就想,要是Python能執(zhí)行js代碼就好了,不用管函數(shù)里面的邏輯了,只拿函數(shù)返回值就好了。

Python第三方包Execjs

安裝

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

pip3 install PyExecJS

Execjs用法超級(jí)簡(jiǎn)單的,幾行代碼。

執(zhí)行js

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

正常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))

混淆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í)行的是js代碼,都是沒(méi)啥問(wèn)題的。

上述拼接時(shí)間返回的js混淆代碼也是可以執(zhí)行的,但是它多了一個(gè)window對(duì)象,需要node安裝jsdom才行,或者使用selenium打開(kāi)游覽器執(zhí)行再返回也行,當(dāng)然,速度更慢。
審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JS
    JS
    +關(guān)注

    關(guān)注

    0

    文章

    79

    瀏覽量

    18986
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4967

    瀏覽量

    73944
  • python
    +關(guān)注

    關(guān)注

    57

    文章

    4876

    瀏覽量

    90016
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    安世中國(guó)打臉荷蘭安世:混淆視聽(tīng)、斷供、抹黑

    Tilger以個(gè)人名義發(fā)出的致安世中國(guó)全體員工信函枉顧事實(shí)、試圖混淆視聽(tīng),充分反映出荷蘭安世部分管理層推卸責(zé)任、置安世中國(guó)全體員工切身利益于不顧的態(tài)度。 ? 這封信函將過(guò)去兩周安世中國(guó)與荷蘭安世的“暗斗”再次推向“明面”,而這場(chǎng)漩渦中牽涉的不僅是
    的頭像 發(fā)表于 11-15 00:14 ?9371次閱讀
    安世中國(guó)打臉荷蘭安世:<b class='flag-5'>混淆</b>視聽(tīng)、斷供、抹黑

    極簡(jiǎn)代碼,5分鐘上手XXTEA加密解密

    1998年提出,旨在改進(jìn)其前身TEA和XTEA算法的安全性。 核心特點(diǎn): 實(shí)現(xiàn)簡(jiǎn)單、代碼精煉、執(zhí)行效率高,非常適合資源受限的環(huán)境,如嵌入式系統(tǒng)、物聯(lián)網(wǎng)設(shè)備或?qū)δ_本、配置文件進(jìn)行基礎(chǔ)保護(hù)。 該算法使用128位
    的頭像 發(fā)表于 01-07 18:08 ?111次閱讀
    極簡(jiǎn)<b class='flag-5'>代碼</b>,5分鐘上手XXTEA加密解密

    HarmonyOS應(yīng)用代碼混淆技術(shù)方案

    代碼混淆技術(shù)可以增加代碼的復(fù)雜性和模糊性,從而提高攻擊者分析代碼的難度。
    的頭像 發(fā)表于 11-21 16:17 ?5600次閱讀
    HarmonyOS應(yīng)用<b class='flag-5'>代碼</b><b class='flag-5'>混淆</b>技術(shù)方案

    虛擬電廠VS傳統(tǒng)電廠VS微電網(wǎng)的差異:3大維度拆解,避免概念混淆

    。不少?gòu)臉I(yè)者將虛擬電廠等同于“數(shù)字化傳統(tǒng)電廠”,或?qū)⑵渑c微電網(wǎng)混為一談,這種概念混淆可能導(dǎo)致技術(shù)選型偏差與政策應(yīng)用錯(cuò)位。本文從核心屬性、運(yùn)行邏輯、價(jià)值定位三大維度,系統(tǒng)拆解三者差異,厘清各自的應(yīng)用場(chǎng)景與發(fā)展邊界。
    的頭像 發(fā)表于 11-13 11:48 ?1261次閱讀

    代碼開(kāi)發(fā)平臺(tái)推薦:2025國(guó)內(nèi)低代碼開(kāi)發(fā)平臺(tái)排名TOP10

    代碼開(kāi)發(fā)平臺(tái)排行榜 在企業(yè)數(shù)字化轉(zhuǎn)型的浪潮中,低代碼開(kāi)發(fā)平臺(tái)正逐漸成為企業(yè)實(shí)現(xiàn)高效開(kāi)發(fā)和快速迭代的重要工具。隨著技術(shù)的不斷進(jìn)步和市場(chǎng)需求的持續(xù)增長(zhǎng),低代碼開(kāi)發(fā)平臺(tái)的市場(chǎng)競(jìng)爭(zhēng)也日益激烈。以下
    的頭像 發(fā)表于 10-28 10:22 ?728次閱讀

    ArkGuard混淆工具使用指南

    ArkGuard是一款源碼混淆工具,提供基礎(chǔ)混淆功能。當(dāng)軟件發(fā)布后,其代碼很容易被他人獲取分析,通過(guò)閱讀清晰的變量名、函數(shù)名,攻擊者或競(jìng)爭(zhēng)者可以非常輕松地理解代碼的邏輯結(jié)構(gòu)、業(yè)務(wù)核心算
    的頭像 發(fā)表于 09-28 16:05 ?923次閱讀
    ArkGuard<b class='flag-5'>混淆</b>工具使用指南

    【匯思博SEEK100開(kāi)發(fā)板試用體驗(yàn)】3/第一次使用OpenHarmony

    /pages/index.ets JS項(xiàng)目:entry/src/main/js/pages/index/index.js ??修改核心代碼?? // eTS示例:修改默認(rèn)文本 @S
    發(fā)表于 08-20 22:21

    絕對(duì)值編碼器避坑指南:常見(jiàn)選型誤區(qū)之混淆“分辨率”與“精度”,盲目追求高分辨率

    絕對(duì)值編碼器作為精準(zhǔn)定位與運(yùn)動(dòng)控制的核心部件,其選型直接影響設(shè)備的精度、穩(wěn)定性和壽命。但在實(shí)際選型中,由于對(duì)技術(shù)參數(shù)、應(yīng)用場(chǎng)景和產(chǎn)品特性的理解偏差,很容易陷入誤區(qū)。本文針對(duì)絕對(duì)值編碼器選型的常見(jiàn)誤區(qū)之一:混淆“分辨率”與“精度”,盲目追求高分辨率,并提供對(duì)應(yīng)的避坑思路,幫助精準(zhǔn)選型。
    的頭像 發(fā)表于 08-04 11:24 ?1153次閱讀
    絕對(duì)值編碼器避坑指南:常見(jiàn)選型誤區(qū)之<b class='flag-5'>混淆</b>“分辨率”與“精度”,盲目追求高分辨率

    OLED代碼分享

    OLED代碼
    發(fā)表于 04-29 17:04 ?1次下載

    AIWA HS-JS415維修手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《AIWA HS-JS415維修手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 04-08 10:37 ?3次下載

    AIWA JS215維修手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《AIWA JS215維修手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 04-01 16:44 ?4次下載

    在樹(shù)莓派上構(gòu)建和部署 Node.js 項(xiàng)目

    探索在RaspberryPi上構(gòu)建和部署Node.js項(xiàng)目的最佳實(shí)踐。通過(guò)我們的專業(yè)提示和技巧,克服常見(jiàn)挑戰(zhàn),使您的項(xiàng)目順利運(yùn)行。去年圣誕節(jié),我收到了一份極其令人著迷的禮物,它占據(jù)了我許多周末的時(shí)間
    的頭像 發(fā)表于 03-25 09:44 ?673次閱讀
    在樹(shù)莓派上構(gòu)建和部署 Node.<b class='flag-5'>js</b> 項(xiàng)目

    僅僅使用代碼,就能點(diǎn)亮樹(shù)莓派的 GPIO 世界

    RaspberryPi的一個(gè)流行應(yīng)用是構(gòu)建Web服務(wù)器。為此,我們可以使用不同的技術(shù),如Python、Node.JS甚至PHP。由于RaspberryPi的絕大多數(shù)腳本都是用Python編寫(xiě)的,因此
    的頭像 發(fā)表于 03-25 09:31 ?613次閱讀
    僅僅使用<b class='flag-5'>代碼</b>,就能點(diǎn)亮樹(shù)莓派的 GPIO 世界

    如何將firware安裝到使用MC9S08JS16CWJ的新USBDM中?

    我正在根據(jù)您名為 USBDM_SWD_SER_JS16CWJ_V3_1 的文件制作一個(gè) USBDM。 現(xiàn)在,我遇到了一個(gè)問(wèn)題,我不知道如何將 firware 安裝到使用 MC9S08JS
    發(fā)表于 03-24 07:46

    HarmonyOS NEXT 原生應(yīng)用/元服務(wù)-ArkTS代碼調(diào)試使用調(diào)試器

    (PandaDebugger)”是調(diào)試器,用于調(diào)試Debugger功能。 Debugger窗格 Debugger顯示兩個(gè)獨(dú)立的窗格: Frames:當(dāng)應(yīng)用暫停時(shí),F(xiàn)rames區(qū)會(huì)顯示當(dāng)前代碼所引用的代碼
    發(fā)表于 03-06 15:30