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

WebSocket爬蟲與JS逆向?qū)崙?zhàn)

這篇具有很好參考價(jià)值的文章主要介紹了WebSocket爬蟲與JS逆向?qū)崙?zhàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

聲明:本文章中所有內(nèi)容僅供學(xué)習(xí)交流,不可用于任何商業(yè)用途和非法用途,否則后果自負(fù),如有侵權(quán),請(qǐng)聯(lián)系作者立即刪除!由于本人水平有限,如有理解或者描述不準(zhǔn)確的地方,還望各位大佬指教!!


練習(xí)網(wǎng)站:

Q3JhenkgUHJvTW9ua2V5IGh0dHBzOi8vd3d3LnBhbnpob3UuZ292LmNuL3p3Z2tfMTU4NjEvemZ4eGdremwvZmR6ZGdrbnJfNTgzNTQxNi9senlqXzU4MzU0MTcvemZ3al81ODM1NDE4L2luZGV4Lmh0bWw=

網(wǎng)站分析:

打開開發(fā)者工具,發(fā)現(xiàn)數(shù)據(jù)走的是wss協(xié)議,如圖

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

?前面的文章中也有介紹過,以下特征就是代表著wss協(xié)議

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

既然知道了數(shù)據(jù)走的wss協(xié)議,那么我們就看他的wss鏈接,如圖。但是我們發(fā)現(xiàn)wss鏈接是由幾個(gè)加密值拼接的,那么我們的任務(wù)就是破解加密值以及尋找解密方法和入口

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

實(shí)戰(zhàn)操作:

想必細(xì)心的大佬們都能發(fā)現(xiàn),在ajax接口中,其響應(yīng)的cookie值是和wss鏈接是吻合的,如圖,那么,我們就可以大膽的請(qǐng)求這個(gè)接口了

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

然后接口還需要傳參,參數(shù)值是加密的,那么我們就需要破解加密參數(shù)

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

又經(jīng)過跟棧,找到了參數(shù)的加密入口,i 即為加密值,我們又發(fā)現(xiàn)請(qǐng)求接口時(shí),請(qǐng)求頭有對(duì)Fetch-Mode(為定值)和etag兩個(gè)值有校驗(yàn),那么我們同時(shí)還要拿到etag的值

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

而 i 的值是有 r 函數(shù)對(duì) L 進(jìn)行操作的,那么我們可以模擬 L 的生成(對(duì)url進(jìn)行改變即可),但是我們卻沒有 r 函數(shù)

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

?往上檢查js代碼,發(fā)現(xiàn)了 r 的生成位置

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

看到 r = n(42),并跟進(jìn)去,就知道 r 是由webpack生成的,這里的webpack的處理可以參考前面文章,這里就不做過多介紹了

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python?當(dāng) r 和 etag 復(fù)原之后,就可以正常生成加密參數(shù)了, 如圖

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

運(yùn)行結(jié)果如圖

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

?那么我們就能拿到ajax接口的響應(yīng)cookie值了,就可以生成wss鏈接了,如圖

import execjs
from spider_util.utils import *

def data_sign():
    # 讀取js文件
    with open('./2.js', 'r', encoding='utf-8') as f:
        reader = f.read()
    # 加載編譯讀取內(nèi)容
    loader = execjs.compile(reader)
    # 調(diào)用js文件中的方法
    r = loader.call('fjm_panzhou_sdk')
    # 返回結(jié)果
    return r

data_sign = data_sign()
etag = data_sign[0]
param = data_sign[1]

headers = {
    "content-type": "application/json; charset=UTF-8",
    "etag": etag,
    "fetch-mode": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36",
}
url = "https://www.panzhou.gov.cn/1ywuKELSO2ahQuWZ/api/v1/sessions"
data = {
    "data": param
}
data = json.dumps(data, separators=(',', ':'))
response = requests.post(url, headers=headers, data=data)
wss_param1 = response.cookies.get('dGg2aCfMMK97Ro270mqBFu5qjC8TQbL2opnHvbEpM', '')
wss_param2 = response.cookies.get('FW9uCWqlVzC22m1KfCMCjfvFHpRMsgt', '')
print(wss_param1, wss_param2)
wss_url = f"wss://www.panzhou.gov.cn/1ywuKELSO2ahQuWZ/pr/{wss_param1}/b/ws/m01j9wq8pw/{wss_param2}" # oiysmb2g7k
print(wss_url)

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

?然后用wss協(xié)議發(fā)送請(qǐng)求鏈接,接收服務(wù)器響應(yīng)結(jié)果,就能拿到數(shù)據(jù)了,但是卻請(qǐng)求失敗了

import websocket
import _thread as thread
import time

cookie = f'FW9uCWqlVzC22m1KfCMCjfvFHpRMsgt={wss_param2};dGg2aCfMMK97Ro270mqBFu5qjC8TQbL2opnHvbEpM={wss_param1}'

headers2 = {
    "Pragma": "no-cache",
    "Origin": "https://www.panzhou.gov.cn",
    "Accept-Language": "zh-CN,zh;q=0.9",
    "Sec-WebSocket-Key": "krDSpbfAbFkDxWiFXTQWxA==",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36",
    "Upgrade": "websocket",
    "Cache-Control": "no-cache",
    "Cookie": cookie,
    "Connection": "Upgrade",
    "Sec-WebSocket-Version": "13",
    "Sec-WebSocket-Extensions": "permessage-deflate; client_max_window_bits"
}

def on_message(ws, message):
    """收到對(duì)方消息處理方法"""
    print("對(duì)方發(fā)來的消息:", "".join(url_unquote(message)))
    time.sleep(5)   # 控制發(fā)送頻率
    ws.send('ping')        # 我方?jīng)Q定再回一個(gè)消息

def on_error(ws, error):
    """ 錯(cuò)誤處理方法 """
    print(error)

def on_close(ws,code,msg):
    """ 關(guān)閉處理方法 """
    print("代號(hào):",code)
    print("對(duì)方關(guān)閉發(fā)來的消息:", msg)
    print("### 程序結(jié)束 ###")

def on_open(ws):
    """ 運(yùn)行入口 """
    def run(*args):
        ws.send('ping')    # 我方發(fā)送第一個(gè)消息
    thread.start_new_thread(run, ())   # 開啟線程
    
# websocket.enableTrace(True)    # 是否打開日志信息
ws = websocket.WebSocketApp(wss_url,
                            header=headers2,       # 設(shè)置請(qǐng)求頭
                            on_open=on_open,     # 設(shè)置運(yùn)行入口
                            on_message=on_message,   # 設(shè)置收到消息處理
                            on_close=on_close,  # 發(fā)生關(guān)閉處理
                            on_error=on_error,    # 錯(cuò)誤處理
                            )
ws.run_forever()

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

這個(gè)問題基本上有兩種原因,第一是wss_url不完全正確,第二就是請(qǐng)求頭有其他檢測。而小編已經(jīng)對(duì)可能校驗(yàn)的cookie進(jìn)行處理了,那目前只剩下wss_url的準(zhǔn)確性了。經(jīng)過仔細(xì)觀察鏈接發(fā)現(xiàn),如圖參數(shù)值也是有變動(dòng)的

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

而該參數(shù)就與上面ajax請(qǐng)求傳參的tabId長度相等,且該值也是變動(dòng)的。那么小編就且將兩者值保持對(duì)應(yīng),再次進(jìn)行wss請(qǐng)求

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

這次請(qǐng)求就能正常返回?cái)?shù)據(jù)了,結(jié)果如圖

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

WebSocket爬蟲與JS逆向?qū)崙?zhàn),javascript,websocket,爬蟲,webpack,python

實(shí)戰(zhàn)總結(jié):

js逆向的過程就是這樣,是一個(gè)不斷研究和自我推敲的過程,不過是大佬還是新手小白,都是需要一步一步去入口,定位加密參數(shù),尋找解密方法,完成參數(shù)復(fù)原,模擬正常瀏覽器請(qǐng)求服務(wù)器。所以小編還是希望大家在這個(gè)過程中能不斷嘗試,不斷進(jìn)步

那么,今日的分享就到這里,想要學(xué)習(xí)更多的python爬蟲和js逆向的相關(guān)技巧和知識(shí)的小伙伴們一定要點(diǎn)下關(guān)注喲,后期會(huì)不定時(shí)分享相關(guān)干貨內(nèi)容文章來源地址http://www.zghlxwxcb.cn/news/detail-734378.html

到了這里,關(guān)于WebSocket爬蟲與JS逆向?qū)崙?zhàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • spring boot + mybatis + websocket + js實(shí)戰(zhàn)

    spring boot + mybatis + websocket + js實(shí)戰(zhàn)

    項(xiàng)目技術(shù):spring boot + mybatis + websocket + js 需求背景:當(dāng)添加一個(gè)女孩時(shí),頁面的socket收到消息,打印最新的所有女生list,這樣可以進(jìn)一步在react/vue前端框架下,實(shí)現(xiàn)當(dāng)A用戶新增了某業(yè)務(wù)數(shù)據(jù)后,B用戶的該業(yè)務(wù)list頁面能自動(dòng)將最新的業(yè)務(wù)數(shù)據(jù)list清單刷新出來,而不是需要點(diǎn)

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

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

    【作者主頁】: 吳秋霖 【作者介紹】:Python領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、阿里云博客專家、華為云享專家。長期致力于Python與爬蟲領(lǐng)域研究與開發(fā)工作! 【作者推薦】:對(duì)JS逆向感興趣的朋友可以關(guān)注《爬蟲JS逆向?qū)崙?zhàn)》,對(duì)分布式爬蟲平臺(tái)感興趣的朋友可以關(guān)注《分布式爬蟲平臺(tái)搭建

    2024年02月22日
    瀏覽(23)
  • autox.js鏈接WebSocket實(shí)戰(zhàn),需要的老鐵直接拿走

    ?昨天寫腳本的時(shí)候需要用到sockcet接口,在網(wǎng)上苦尋一番之后發(fā)現(xiàn)這個(gè)段代碼還是比較ok的,今天拿出來給大家分享一下,需要的直接?。?!

    2024年04月16日
    瀏覽(21)
  • websocket逆向

    本章節(jié)主要介紹websocket逆向的 實(shí)際用途 、 直播間常見通信技術(shù) 、 websocket逆向技術(shù) 以及 學(xué)習(xí)路線 。 websocket逆向技術(shù)偏向于直播間互動(dòng)玩法 語言播報(bào) 刷禮物加播 自動(dòng)點(diǎn)歌 彈幕互動(dòng)插件 和游戲交互 和硬件交互 整盅玩法 數(shù)字人 … 下面章節(jié)會(huì)詳細(xì)講解 以前直播間大多采用

    2024年01月18日
    瀏覽(23)
  • JS逆向 webpack解密

    JS逆向 webpack解密

    聲明:本文只作學(xué)習(xí)研究,禁止用于非法用途,否則后果自負(fù),如有侵權(quán),請(qǐng)告知?jiǎng)h除,謝謝! 前言:我技術(shù)可能不是很牛逼,但我很會(huì)偷懶,怎么簡單怎么來,所以有更好的解密方法可以在評(píng)論區(qū)評(píng)論~ 目標(biāo)網(wǎng)站:這個(gè)網(wǎng)站很坑,那個(gè)驗(yàn)證字段搜不到,XHR斷點(diǎn)也斷不到,就

    2024年02月06日
    瀏覽(24)
  • js逆向——webpack扣法

    js逆向——webpack扣法

    01 webpack講解 webpack 是個(gè)靜態(tài)模塊打包工具,目的是為了讓前端工程師寫的前端代碼變成瀏覽器可以識(shí)別的代碼,并且可以達(dá)到前端項(xiàng)目的模塊化,也就是如何更高效地管理和維護(hù)項(xiàng)目中的每一個(gè)資源。 但無疑是對(duì) js逆向 造成了妨礙。但如果掌握了扣取 webpack 的一些技巧也是

    2024年02月03日
    瀏覽(23)
  • JS逆向之Webpack自吐

    JS逆向之Webpack自吐

    聲明:本文只作學(xué)習(xí)研究,禁止用于非法用途,否則后果自負(fù),如有侵權(quán),請(qǐng)告知?jiǎng)h除,謝謝 在這篇文章里面,我們重新利用兩個(gè)方法來實(shí)現(xiàn)扣出代碼優(yōu)化代碼。webpack自吐所有方法和webpack精減代碼法。把這兩個(gè)方法結(jié)合起來使用。 一、 Webpack 是什么? ? webpack是一個(gè)基于模

    2024年02月01日
    瀏覽(27)
  • 【JS逆向?qū)W習(xí)】36kr登陸逆向案例(webpack)

    【JS逆向?qū)W習(xí)】36kr登陸逆向案例(webpack)

    webpack 是一個(gè)基于模塊化的打包(構(gòu)建)工具, 它把一切都視作模塊 webpack 數(shù)組形式,通過 下標(biāo) 取值 webpack 對(duì)象形式,通過 key 取值 接口 : https://gateway.36kr.com/api/mus/login/byMobilePassword 加密參數(shù) : - mobileNo - password 老規(guī)矩,先輸入 賬號(hào)、密碼 ,點(diǎn)擊登錄,分析網(wǎng)絡(luò)請(qǐng)求,如下

    2024年01月19日
    瀏覽(36)
  • 【python】webpack是什么,如何逆向出webpack打包的js代碼?

    【python】webpack是什么,如何逆向出webpack打包的js代碼?

    ?? 歡迎大家來到景天科技苑?? ???? 養(yǎng)成好習(xí)慣,先贊后看哦~???? ?? 作者簡介:景天科技苑 ??《頭銜》:大廠架構(gòu)師,華為云開發(fā)者社區(qū)專家博主,阿里云開發(fā)者社區(qū)專家博主,CSDN新星創(chuàng)作者,掘金優(yōu)秀博主,51CTO博客專家等。 ??《博客》:Python全棧,前后端開

    2024年03月25日
    瀏覽(22)
  • web逆向筆記:js逆向案例四 QQ音樂 sign值(webpack打包代碼如何扣取)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包