国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程

這篇具有很好參考價值的文章主要介紹了【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【作者主頁】:吳秋霖
【作者介紹】:Python領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、阿里云博客專家、華為云享專家。長期致力于Python與爬蟲領(lǐng)域研究與開發(fā)工作!
【作者推薦】:對JS逆向感興趣的朋友可以關(guān)注《爬蟲JS逆向?qū)崙?zhàn)》,對分布式爬蟲平臺感興趣的朋友可以關(guān)注《分布式爬蟲平臺搭建與開發(fā)實戰(zhàn)》
還有未來會持續(xù)更新的驗證碼突防、APP逆向、Python領(lǐng)域等一系列文章

1. 寫在前面

??相信很多爬蟲工程師在進行Web端JS逆向的時候,面對加密參數(shù)無從下手,不知道如何進行定位與分析。本期作者將介紹一款針對Web端逆向Hook定位加密的輔助工具給大家!內(nèi)存漫游確實聽起來有些虛高大上、實則就是檢索瀏覽器內(nèi)存數(shù)據(jù)…

以下是該工具功能與原理的部分描述:

    • 訪問目標網(wǎng)站時設(shè)置瀏覽器走自定義的代理服務(wù)器,這個代理服務(wù)器要支持能夠使用代碼處理請求,這里選擇是anyproxy
    • 在代理服務(wù)器這里,對請求做處理,對于JavaScript響應(yīng)和HTML響應(yīng)里的JS代碼,使用AST實時處理,注入Hook邏輯
    • Hook邏輯就是所有涉及到變量的地方都經(jīng)過我們的Hook方法,所以實現(xiàn)頁面上所有的變量值都可以捕獲到,可以把這個理解為內(nèi)存中變量級別的抓包監(jiān)控
    • 抓到的變量會被保存到一個變量數(shù)據(jù)庫中,然后當(dāng)你訪問頁面請求時帶上加密參數(shù)的請求之后,從Chrome開發(fā)者工具的網(wǎng)絡(luò)中把那個加密參數(shù)復(fù)制出來,切換到控制臺調(diào)用本工具提供的api在變量數(shù)據(jù)庫中搜索一下,可以搜索到存儲該字符串的變量及變量所在的代碼位置,點擊代碼位置可以自動切換到源面板并自動定位到變量位置
    • 變量級抓包監(jiān)控,根據(jù)加密參數(shù)秒秒鐘定位到加密邏輯的代碼位置(追加密邏輯代碼位置的通殺方案)

然后打斷點往前找加密邏輯摳出來就可以,如果有多個加密參數(shù)或者加密參數(shù)為多個地方拼接生成,無腦重復(fù)此步驟即可?。?/strong>

按照上述項目的描述,對Web端進行JS逆向中,在我們有時候無法快速精準的定位到加密參數(shù)入口時,確實可以用以輔助

2. 環(huán)境搭建

首先,第一步我們需要下載項目到本地,安裝依賴:

npm install -g anyproxy
npm install shelljs

【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程,Python爬蟲實戰(zhàn),javascript,python,抓包工具,Hook

缺什么根據(jù)提示安裝即可,如果在這里出現(xiàn)npm異常,可以嘗試:

npm cache clean --force
npm config set strict-ssl false
npm config set registry https://npm.aliyun.com/

接下來,需要啟動兩個本地服務(wù),我們分別來看一下代碼實現(xiàn),proxy-server.js代碼如下所示:

const AnyProxy = require("anyproxy");

const options = { 
    port: 10086,
    rule: require("./rules"),
    webInterface: {
        enable: true,
        webPort: 8002
    },  
    throttle: 10000,
    forceProxyHttps: true,
    wsIntercept: false, // 不開啟websocket代理
    silent: false
};
const proxyServer = new AnyProxy.ProxyServer(options);

proxyServer.on("ready", () => { /* */ }); 
proxyServer.on("error", (e) => { /* */ }); 
proxyServer.start();

首先導(dǎo)入一個代理服務(wù)的包Anyproxy,這個包的話在之前已經(jīng)安裝好了。端口設(shè)置的是10086,這個我們是可以自行修改的,然后引用了一個rules文件,這個文件內(nèi)引用的就是核心的Hook邏輯。另外Web端口是8002,可以直接訪問類似mit抓包界面

另一個需要啟動的api-server.js服務(wù)代碼如下所示:

const express = require("express");
const bodyParser = require("body-parser");
const {injectHook} = require("../components/global-assign-hook-component/core/inject-hook");

const app = express();

app.use(bodyParser.raw({
    verify: function (req, res, buf, encoding) {
        if (buf && buf.length) {
            req.rawBody = buf.toString("UTF-8");
        }   
    }, type: function () {
        return true
    }   
}));
// 將傳過來的js代碼注入hook
app.post("/hook-js-code", function (request, response) {
    const jsCode = decodeURIComponent(request.body.toString());
    let newJsCode = jsCode;
    try {
        newJsCode = injectHook(jsCode);
    } catch (e) {
        console.error(e);
    }   
    response.setHeader("Content-Type", "text/plain; charset=utf-8");
    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader("Access-Control-Allow-Methods", "*");
    response.send(encodeURIComponent(newJsCode));
    response.end();
})

// 以后如果能夠和頁面上雙向通信,上報各種數(shù)據(jù)到這里,就能夠?qū)崿F(xiàn)功能更強的分析之類的

const server = app.listen(10010, function () {
    console.log("啟動成功");
})

代碼中同樣導(dǎo)入了一個NodeJS的Web服務(wù)器包express,有時候我們做爬蟲可能會用到它來開發(fā)接口服務(wù)

啟動第一個代理服務(wù),運行命令如下:

node src/proxy-server/proxy-server.js

運行服務(wù)可能會提示缺少根證書(CA),在AnyProxy中,為了進行HTTPS代理,需要使用根證書進行中間人攻擊,解決方法我們需要運行anyproxy-ca命令來生成根證書,如下圖所示:

【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程,Python爬蟲實戰(zhàn),javascript,python,抓包工具,Hook
【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程,Python爬蟲實戰(zhàn),javascript,python,抓包工具,Hook

記得設(shè)置Anyproxy證書信任,不然無法進行有效的Hook

【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程,Python爬蟲實戰(zhàn),javascript,python,抓包工具,Hook

證書信任完成后,重新啟動Server服務(wù),如下:

【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程,Python爬蟲實戰(zhàn),javascript,python,抓包工具,Hook

接下來進入項目api-server文件下,同樣方式啟動監(jiān)聽服務(wù):

【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程,Python爬蟲實戰(zhàn),javascript,python,抓包工具,Hook

服務(wù)啟動后,在瀏覽器中配置IP地址跟端口,這里推薦使用Chrome搭建單獨的調(diào)試環(huán)境,配合使用Proxy Switchy0mega或者其它類似的插件作為代理路由輔助,配置信息如下:

【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程,Python爬蟲實戰(zhàn),javascript,python,抓包工具,Hook

除了以上瀏覽器插件配置的方式,也可在網(wǎng)絡(luò)設(shè)置中進行配置,具體方案不限,只要能夠?qū)崿F(xiàn)流量走AnyProxy代理就可以

2. 加密定位實戰(zhàn)

服務(wù)已經(jīng)搭建完成,接下來,這里我找了一個有加密參數(shù)的網(wǎng)站進行測試,這是一個翻頁請求中帶sign簽名加密參數(shù)的接口,點擊更多翻頁,可以看到sign的值如下所示:

【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程,Python爬蟲實戰(zhàn),javascript,python,抓包工具,Hook

ATS實時處理JS文件會比較慢,同時會生成一個緩存目錄來存放JS文件,加載文件如下:

【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程,Python爬蟲實戰(zhàn),javascript,python,抓包工具,Hook

這個時候我們直接將上面截圖中sign簽名的值拿到控制臺進行Hook搜索,如下所示:

【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程,Python爬蟲實戰(zhàn),javascript,python,抓包工具,Hook

可以看到在上圖的控制臺中,會展示很多重要的信息字段,我們重點需要知道的就是sign這個值是在什么地方生成的,可以看到e是生成后的結(jié)果,執(zhí)行的方法是Xt,我們點擊跳轉(zhuǎn)到代碼處,如下所示:
【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程,Python爬蟲實戰(zhàn),javascript,python,抓包工具,Hook

這里會發(fā)現(xiàn)出現(xiàn)了很多名為cc11001100_hook的函數(shù),可以把這個函數(shù)理解為它會直接返回第二個參數(shù)的值,對整體邏輯沒有影響,分析時忽略它即可!

這里可能很多職業(yè)玩家會質(zhì)疑,有的加密參數(shù),直接使用參數(shù)名搜索或者輕量級Hook跟棧甚至是XHR跟棧那不是更加簡便?沒錯!這個網(wǎng)站中的sign參數(shù)使用關(guān)鍵詞搜索就能夠定位到入口,如下所示:

【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程,Python爬蟲實戰(zhàn),javascript,python,抓包工具,Hook

可以看到加密方法Xt接受一個參數(shù)n,控制臺打印看一下:

【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程,Python爬蟲實戰(zhàn),javascript,python,抓包工具,Hook

n是翻頁接口請求URL所拼接的一堆參數(shù),測試了一下Xt是一個標準的MD5加密算法:

【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程,Python爬蟲實戰(zhàn),javascript,python,抓包工具,Hook

有點講的跑題了,本期還是回歸主題說的是利用Hook工具去輔助我們JS逆向定位加密參數(shù)

最后,按照作者自己的說法本項目本身就是一個通殺工具,它并不針對某一個站。所以在爬蟲Web端JS逆向分析中大家可以根據(jù)經(jīng)驗來選擇合適的方案與工具!畢竟,一款好用的工具確實能夠讓JS逆向變得更加簡單

??好了,到這里又到了跟大家說再見的時候了。創(chuàng)作不易,幫忙點個贊再走吧。你的支持是我創(chuàng)作的動力,希望能帶給大家更多優(yōu)質(zhì)的文章文章來源地址http://www.zghlxwxcb.cn/news/detail-836250.html

到了這里,關(guān)于【爬蟲JS逆向-工具篇】瀏覽器內(nèi)存漫游加密參數(shù)Hook實戰(zhàn)教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 爬蟲&搜索引擎&瀏覽器

    搜索引擎和瀏覽器是兩個不同的概念,它們在互聯(lián)網(wǎng)使用過程中扮演著不同的角色。 瀏覽器 是一種用來訪問互聯(lián)網(wǎng)并查看網(wǎng)頁的軟件應(yīng)用程序。用戶通過瀏覽器可以輸入網(wǎng)址、點擊鏈接、搜索信息、觀看視頻等。常見的瀏覽器包括 Chrome、Safari、Firefox、Edge 等。瀏覽器充當(dāng)了

    2024年02月04日
    瀏覽(25)
  • 爬蟲進階之selenium模擬瀏覽器

    爬蟲進階之selenium模擬瀏覽器

    Selenium是一個用于自動化瀏覽器操作的工具,通常用于Web應(yīng)用測試。然而,它也可以用作爬蟲,通過模擬用戶在瀏覽器中的操作來提取網(wǎng)頁數(shù)據(jù)。以下是有關(guān)Selenium爬蟲的一些基本介紹: 瀏覽器自動化: Selenium允許你通過編程方式控制瀏覽器的行為,包括打開網(wǎng)頁、點擊按鈕

    2024年01月20日
    瀏覽(104)
  • python爬蟲之selenium庫,瀏覽器訪問搜索頁面并提取信息,及隱藏瀏覽器運行

    python爬蟲之selenium庫,瀏覽器訪問搜索頁面并提取信息,及隱藏瀏覽器運行

    如果鏈接簡單,爬蟲可以通過鏈接用requests庫提取頁面信息,如爬取豆瓣top250影片信息,鏈接簡單易懂。參考:爬取豆瓣top250影片信息 但如果遇到一些搜索之類的,基于js動態(tài)加載的網(wǎng)頁,以上就不適合,如爬蟲b站,搜索“爬蟲”頁面,第一頁鏈接如下,第二頁又是很長沒規(guī)

    2024年01月23日
    瀏覽(228)
  • python爬蟲之selenium模擬瀏覽器

    python爬蟲之selenium模擬瀏覽器

    之前在異步加載(AJAX)網(wǎng)頁爬蟲的時候提到過,爬取這種ajax技術(shù)的網(wǎng)頁有兩種辦法:一種就是通過瀏覽器審查元素找到包含所需信息網(wǎng)頁的真實地址,另一種就是通過selenium模擬瀏覽器的方法[1]。當(dāng)時爬的是豆瓣,比較容易分析出所需信息的真實地址,不過一般大點的網(wǎng)站像

    2024年02月03日
    瀏覽(91)
  • Windows使用selenium操作瀏覽器爬蟲

    Windows使用selenium操作瀏覽器爬蟲

    以前的大部分程序都是操作Chrome,很少有操作Edge,現(xiàn)在以Edge為例。 Selenium本身是無法直接控制瀏覽器的,不同的瀏覽器需要不同的驅(qū)動程序,Google Chrome需要安裝ChromeDriver、Edge需要安裝Microsoft Edge WebDriver,其他瀏覽器也需要安裝相應(yīng)的驅(qū)動。 edge://version/ https://developer.micros

    2024年02月04日
    瀏覽(87)
  • Python 和 Selenium 的瀏覽器爬蟲

    Python 和 Selenium 的瀏覽器爬蟲

    Selenium?是一款強大的基于瀏覽器的開源自動化測試工具,最初由 Jason Huggins 于 2004 年在 ThoughtWorks 發(fā)起,它提供了一套簡單易用的 API,模擬瀏覽器的各種操作,方便各種 Web 應(yīng)用的自動化測試。 它的取名很有意思,因為當(dāng)時最流行的一款自動化測試工具叫做 QTP,是由 Mercur

    2024年02月08日
    瀏覽(157)
  • Python爬蟲(2)-Selenium控制瀏覽器

    Python爬蟲(2)-Selenium控制瀏覽器

    Selenium中提供了不少的方法來操作瀏覽器 使用driver.get(‘網(wǎng)址’)的方式來打開瀏覽器 driver.refresh() 瀏覽器切換標簽的方法就是, driver.current_window_handle 用selenium點擊新打開了一個網(wǎng)頁,需要告知selenium目前這個窗口是新的窗口,那么它才能早新的頁面進行操作不然的話就無法操

    2024年02月08日
    瀏覽(88)
  • 【python爬蟲】設(shè)計自己的爬蟲 4. 封裝模擬瀏覽器 Selenium

    有些自動化工具可以獲取瀏覽器當(dāng)前呈現(xiàn)的頁面的源代碼,可以通過這種方式來進行爬取 一般常用的的有Selenium, playwright, pyppeteer,考慮到他們的使用有許多相同之處,因此考慮把他們封裝到一套api中 先看基類 Selenium是一個自動化測試工具,利用它可以驅(qū)動瀏覽器完成特定

    2024年02月03日
    瀏覽(91)
  • python使用selenium控制瀏覽器進行爬蟲

    python使用selenium控制瀏覽器進行爬蟲

    這里以谷歌瀏覽器為例,需要安裝一下chromedriver,其他瀏覽器也有相對應(yīng)的driver,chromedriver下載地址:https://googlechromelabs.github.io/chrome-for-testing/ 然后是打開python環(huán)境安裝一下依賴 pip install selenium ,驗證一下控制瀏覽器是否成功 點擊運行腳本可以看到以下頁面就成功了。 爬蟲

    2024年02月04日
    瀏覽(88)
  • 【python爬蟲】10.指揮瀏覽器自動工作(selenium)

    【python爬蟲】10.指揮瀏覽器自動工作(selenium)

    上一關(guān),我們認識了cookies和session。 分別學(xué)習(xí)了它們的用法,以及區(qū)別。 還做了一個項目:帶著小餅干登錄,然后在博客中發(fā)表評論。 除了上一關(guān)所講的登錄問題,在爬蟲過程中,我們還可能會遇到各種各樣棘手的問題—— 有的網(wǎng)站登錄很復(fù)雜,驗證碼難以破解,比如大名

    2024年02月10日
    瀏覽(94)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包