色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是js代碼混淆

python爬蟲知識分享 ? 來源:python爬蟲知識分享 ? 作者:python爬蟲知識分享 ? 2022-03-31 16:05 ? 次閱讀

為什么要引出Python執行js這個問題?

都說術業有專攻,每個語言也都有自己的長處和短處。在爬蟲方向,Python絕對是扛把子,近幾年隨著AI的火爆,需要各種各樣的數據,所以,爬蟲需求也跟著水漲船高起來。

做爬蟲的當然是爬的爽,但是估計人家后臺在罵街,畢竟誰都不希望自己的數據被弄走,所以后臺反爬技術也在快速提升,一攻一防就這么在拉鋸著。

現在為了防止反爬,前端使用的反爬技術比較多的是js代碼混淆。

什么是js代碼混淆?

正常代碼

我們現在看一段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;
}

混淆代碼

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代碼都成這玩意了,還能執行嗎? 答案是肯定的。即使js代碼非常亂,但還是可以執行的,結果跟上面的是一樣的。

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

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

后來我就想,要是Python能執行js代碼就好了,不用管函數里面的邏輯了,只拿函數返回值就好了。

Python第三方包Execjs

安裝

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

pip3 install PyExecJS

Execjs用法超級簡單的,幾行代碼。

執行js

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

正常js代碼


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

Python執行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執行混淆js代碼

import execjs

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

即使再混淆,只要執行的是js代碼,都是沒啥問題的。

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JS
    JS
    +關注

    關注

    0

    文章

    78

    瀏覽量

    18146
  • 代碼
    +關注

    關注

    30

    文章

    4818

    瀏覽量

    68873
  • python
    +關注

    關注

    56

    文章

    4805

    瀏覽量

    84929
收藏 人收藏

    評論

    相關推薦

    AWTK-WEB 快速入門(2) - JS 應用程序

    導讀AWTK可以使用相同的技術棧開發各種平臺的應用程序。有時我們需要使用Web界面與設備進行交互,本文介紹一下如何使用JS語言開發AWTK-WEB應用程序。用AWTKDesigner新建一個應用程序先安裝AWTKDesigner:
    的頭像 發表于 12-05 01:04 ?141次閱讀
    AWTK-WEB 快速入門(2) - <b class='flag-5'>JS</b> 應用程序

    Node.js小科普和Node.js安裝常見管理工具

    Node.js是一個JavaScript的運行環境,用來執行JavaScript代碼。 為什么會出現這么一個運行環境呢,從JavaScript研發初衷可以看出它是為了運行在瀏覽器中的,讓網頁交互更加
    的頭像 發表于 11-23 15:37 ?146次閱讀
    Node.<b class='flag-5'>js</b>小科普和Node.<b class='flag-5'>js</b>安裝常見管理工具

    JS實現簡單的屏幕錄像機

    作者:京東保險 張潔 本文將介紹如何用JS實現簡單的屏幕錄像機。 一、錄制準備 創建一個按鈕 ? Start recording ? 書寫JavaScript ? var
    的頭像 發表于 10-09 15:27 ?170次閱讀

    鴻蒙跨端實踐-JS虛擬機架構實現

    在Roma跨端方案中,JS虛擬機是框架的核心,負責執行動態化的JS代碼。在Android平臺采用了基于V8的J2V8,iOS平臺則使用了系統自帶的JSCore,而在HarmonyOS中,由于業界無
    的頭像 發表于 09-30 14:42 ?2471次閱讀
    鴻蒙跨端實踐-<b class='flag-5'>JS</b>虛擬機架構實現

    推薦一個支持js的嵌入式設備開發平臺

    可以通過vscode開發js,實時推送js代碼到設備里運行,無需編譯,支持屏幕,感興趣的可以看看 https://github.com/duoxianwulian/dxdop 提供很多js
    發表于 09-04 14:04

    java反編譯的代碼可以修改么

    Java反編譯是一種將編譯后的Java字節碼(.class文件)轉換回源代碼的過程。反編譯后的代碼可以進行修改,但是需要注意,反編譯代碼的質量和可讀性可能會受到原始編譯代碼
    的頭像 發表于 09-02 11:00 ?782次閱讀

    工程師必備!Node.js和常見管理工具介紹(附操作演示)

    語言及其相關生態中的一些基礎而關鍵的概念,以及它們是如何在互聯網歷史浪潮中產生的。一JavaScript與Node.js1JavaScriptJavaScript,即JS,
    的頭像 發表于 08-30 12:34 ?339次閱讀
    工程師必備!Node.<b class='flag-5'>js</b>和常見管理工具介紹(附操作演示)

    分享IP地址混淆知識

    由于IPv4 地址資源的枯竭促使 IPv6 技術的廣泛應用,從而形成了 IPv4 和 IPv6 并存的局面。這就逐漸出現了 IP 地址混淆導致的網絡問題。
    的頭像 發表于 07-31 16:54 ?325次閱讀

    DX1008JS 晶體諧振器——輕薄與高性能的完美結合

    DX1008JS 晶體諧振器——輕薄與高性能的完美結合
    的頭像 發表于 07-24 14:15 ?367次閱讀

    K8S學習教程三:在PetaExpress KubeSphere 容器部署 Wiki 系統 wiki.js 并啟用中文全文檢索

    K8S學習教程(三):在PetaExpress KubeSphere 容器部署 Wiki 系統 wiki.js 并啟用中文全文檢索? 。
    的頭像 發表于 07-08 17:03 ?674次閱讀
    K8S學習教程三:在PetaExpress KubeSphere 容器部署 Wiki 系統 wiki.<b class='flag-5'>js</b> 并啟用中文全文檢索

    JScope RTT模式無法找到區塊是怎么回事?

    。 /* 代碼部分開始 */ #include\"SEGGER_RTT.h\" ..... main(){ char JS_RTT_UpBuffer[100]; int
    發表于 05-20 07:23

    鴻蒙開發學習:【OpenHarmony HAR】

    OpenHarmony js/ts三方庫使用的是OpenHarmony靜態共享包,即HAR(Harmony Archive),可以包含js/ts代碼、c++庫、資源和配置文件。通過HAR,可以實現
    的頭像 發表于 03-18 16:27 ?786次閱讀

    【鴻蒙】NAPI 框架生成工具實現流程

    NAPI 框架生成工具 可以根據用戶指定路徑下的 ts(typescript)接口文件一鍵生成 NAPI 框架代碼、業務代碼框架、GN 文件等。在開發 JS 應用與 NAPI 間接口時,底層框架
    的頭像 發表于 02-28 17:00 ?721次閱讀
    【鴻蒙】NAPI 框架生成工具實現流程

    【鴻蒙】OpenHarmony 4.0藍牙代碼結構簡析

    OpenHarmony藍牙模塊 代碼倉和目錄結構 當前藍牙完整的代碼涉及多個代碼代碼路徑 說明 應用接口https://gitee.com/openharmony/interfac
    的頭像 發表于 02-26 16:08 ?1650次閱讀
    【鴻蒙】OpenHarmony 4.0藍牙<b class='flag-5'>代碼</b>結構簡析

    數據中心機房建設的痛點:概念上的混淆與建設的重要性

    的問題,并強調機房工程的重要性。 機房建設概念的混淆 1.機房建設與裝修的混淆 一些人將機房建設簡單地歸結為裝修工程,認為機房建設就是對機房進行裝修。這種觀點的存在可能導致對機房工程的綜合性和復雜性的低估,忽視了機房工
    的頭像 發表于 02-23 16:25 ?784次閱讀
    數據中心機房建設的痛點:概念上的<b class='flag-5'>混淆</b>與建設的重要性
    主站蜘蛛池模板: 99久久国产极品蜜臀AV酒店| 精品久久久亚洲精品中文字幕| 欧美freesex黑人又粗又| WWW国产亚洲精品久久| 帅哥操帅哥| 精品国产精品人妻久久无码五月天| 在线亚洲视频无码天堂| 日本国产精品无码一区免费看| 国产区免费在线观看| 中文字幕视频免费在线观看| 日韩亚洲国产中文字幕欧美| 精品成人片深夜| 成人国产在线观看| 亚洲一区综合图区| 日韩插啊免费视频在线观看| 九九热精品免费观看| 成人在线免费视频观看| 一本之道高清在线3线观看| 强姧伦久久久久久久久| 精品国产品国语在线不卡丶| av天堂网站avtt2017| 亚洲毛片网| 日韩一区二区天海翼| 久久精品无码人妻无码AV蜜臀| 东北嫖妓对白粗口| 伊人久久大香线蕉综合电影 | 精品高潮呻吟99AV无码| md2.pud 麻豆传媒官网| 亚洲伊人久久精品| 四虎国产精品高清在线观看| 美女用手扒开粉嫩的屁股| 国产主播福利一区二区| YELLOW日本动漫免费动漫| 一个色综合久久| 熟妇的味道HD中文字幕 | 久 久 亚洲 少 妇 无 码| 高H短篇辣肉纯肉| 99视频精品全部免费 在线| 一本大道无码AV天堂欧美| 偷窥美女3| 全黄H全肉细节文NP|