chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

    文章

    78

    瀏覽量

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

    關(guān)注

    30

    文章

    4922

    瀏覽量

    72221
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4848

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    ArkGuard混淆工具使用指南

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

    AIWA JS215維修手冊(cè)

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

    在樹(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 ?429次閱讀
    在樹(shù)莓派上構(gòu)建和部署 Node.<b class='flag-5'>js</b> 項(xiàng)目

    如何將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

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

    處停住,并高亮顯示。 二、異常斷點(diǎn) 在BreakPoints中,勾選ArkTS/Js Exception Breakpoints,開(kāi)啟異常斷點(diǎn)。 當(dāng)調(diào)試應(yīng)用程序中出現(xiàn)異常時(shí),會(huì)在異常處高亮,并且代碼
    發(fā)表于 03-04 17:15

    代碼與傳統(tǒng)開(kāi)發(fā)的區(qū)別 低代碼與無(wú)代碼開(kāi)發(fā)的區(qū)別

    在軟件開(kāi)發(fā)領(lǐng)域,傳統(tǒng)開(kāi)發(fā)、低代碼開(kāi)發(fā)以及無(wú)代碼開(kāi)發(fā)是三種不同的開(kāi)發(fā)方式,每種方式都有其獨(dú)特的優(yōu)勢(shì)和適用場(chǎng)景。 一、低代碼開(kāi)發(fā)與傳統(tǒng)開(kāi)發(fā)的區(qū)別 低代碼開(kāi)發(fā)是一種新興的應(yīng)用程序開(kāi)發(fā)方法,旨
    的頭像 發(fā)表于 01-31 10:48 ?882次閱讀

    Bun 1.2震撼發(fā)布:全力挑戰(zhàn)Node.js生態(tài)的JavaScript運(yùn)行時(shí)新星

    了與 Node.js 的兼容性,還為開(kāi)發(fā)者帶來(lái)了內(nèi)置的數(shù)據(jù)庫(kù)支持和云服務(wù)集成能力,進(jìn)一步強(qiáng)化了其“全能工具包”的定位。Node.js 兼容性獲得突破性進(jìn)展在此次更新中,最引人注目的是 Bun 在 Node.js 兼容性
    的頭像 發(fā)表于 01-24 10:42 ?1176次閱讀
    Bun 1.2震撼發(fā)布:全力挑戰(zhàn)Node.<b class='flag-5'>js</b>生態(tài)的JavaScript運(yùn)行時(shí)新星

    AWTK-WEB 快速入門(mén)(4) - JS Http 應(yīng)用程序

    導(dǎo)讀XMLHttpRequest改變了Web應(yīng)用程序與服務(wù)器交換數(shù)據(jù)的方式,fetch是其繼任者。本文介紹一下如何使用JS語(yǔ)言開(kāi)發(fā)AWTK-WEB應(yīng)用程序,并用fetch訪問(wèn)遠(yuǎn)程數(shù)據(jù)。用AWTKDesigner新建一個(gè)應(yīng)用程
    的頭像 發(fā)表于 01-22 11:31 ?623次閱讀
    AWTK-WEB 快速入門(mén)(4) - <b class='flag-5'>JS</b> Http 應(yīng)用程序

    AKI跨語(yǔ)言調(diào)用庫(kù)神助攻C/C++代碼遷移至HarmonyOS NEXT

    )開(kāi)發(fā)框架。它極大地簡(jiǎn)化了JS與C/C++之間的跨語(yǔ)言訪問(wèn),為開(kāi)發(fā)者提供了一種邊界性編程體驗(yàn)友好的解決方案。通過(guò)AKI,開(kāi)發(fā)者可以使用讓代碼更易讀的語(yǔ)法糖,實(shí)現(xiàn)JS與C/C++之間的無(wú)障礙跨語(yǔ)言互調(diào)
    發(fā)表于 01-02 17:08

    AWTK-WEB 快速入門(mén)(2) - JS 應(yīng)用程序

    導(dǎo)讀AWTK可以使用相同的技術(shù)棧開(kāi)發(fā)各種平臺(tái)的應(yīng)用程序。有時(shí)我們需要使用Web界面與設(shè)備進(jìn)行交互,本文介紹一下如何使用JS語(yǔ)言開(kāi)發(fā)AWTK-WEB應(yīng)用程序。用AWTKDesigner新建一個(gè)應(yīng)用程序先安裝AWTKDesigner:
    的頭像 發(fā)表于 12-05 01:04 ?682次閱讀
    AWTK-WEB 快速入門(mén)(2) - <b class='flag-5'>JS</b> 應(yīng)用程序

    BD數(shù)字化裝備場(chǎng)賦能:重塑現(xiàn)代JS基地的競(jìng)爭(zhēng)力

    與維修效率,更為BD戰(zhàn)斗力的全面提升提供了有力保障。在未來(lái)的JS發(fā)展中,數(shù)字化、智能化的裝備場(chǎng)管理體系將持續(xù)完善與創(chuàng)新,為BD的現(xiàn)代化建設(shè)注入更加強(qiáng)勁的動(dòng)力。
    的頭像 發(fā)表于 11-26 15:52 ?758次閱讀

    Node.js小科普和Node.js安裝常見(jiàn)管理工具

    Node.js是一個(gè)JavaScript的運(yùn)行環(huán)境,用來(lái)執(zhí)行JavaScript代碼。 為什么會(huì)出現(xiàn)這么一個(gè)運(yùn)行環(huán)境呢,從JavaScript研發(fā)初衷可以看出它是為了運(yùn)行在瀏覽器中的,讓網(wǎng)頁(yè)交互更加
    的頭像 發(fā)表于 11-23 15:37 ?651次閱讀
    Node.<b class='flag-5'>js</b>小科普和Node.<b class='flag-5'>js</b>安裝常見(jiàn)管理工具