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

最新PDD批發(fā)Anti-Content參數(shù)逆向分析與算法還原

這篇具有很好參考價(jià)值的文章主要介紹了最新PDD批發(fā)Anti-Content參數(shù)逆向分析與算法還原。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【??作者主頁】:吳秋霖
【??作者介紹】:擅長爬蟲與JS加密逆向分析!Python領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、CSDN博客專家、阿里云博客專家、華為云享專家。一路走來長期堅(jiān)守并致力于Python與爬蟲領(lǐng)域研究與開發(fā)工作!
【??作者推薦】:對(duì)爬蟲領(lǐng)域以及JS逆向分析感興趣的朋友可以關(guān)注《爬蟲JS逆向?qū)崙?zhàn)》《深耕爬蟲領(lǐng)域》
未來作者會(huì)持續(xù)更新所用到、學(xué)到、看到的技術(shù)知識(shí)!包括但不限于:各類驗(yàn)證碼突防、爬蟲APP與JS逆向分析、RPA自動(dòng)化、分布式爬蟲、Python領(lǐng)域等相關(guān)文章

作者聲明:文章僅供學(xué)習(xí)交流與參考!嚴(yán)禁用于任何商業(yè)與非法用途!否則由此產(chǎn)生的一切后果均與作者無關(guān)!如有侵權(quán),請(qǐng)聯(lián)系作者本人進(jìn)行刪除!

1. 寫在前面

??上次周六的時(shí)候熬夜分析還原了一下商家后臺(tái)的Anti-Content,那個(gè)參數(shù)是0aq開頭的,本次的話應(yīng)粉絲要求對(duì)批發(fā)網(wǎng)站進(jìn)行了同樣的參數(shù)分析,與其不同的是參數(shù)開頭為0ar

分析目標(biāo)

aHR0cHM6Ly9waWZhLnBpbmR1b2R1by5jb20v

老規(guī)矩,開局先放一張結(jié)果圖,后續(xù)內(nèi)容全靠編?。?!

另外,對(duì)之前商家端Anti-Content參數(shù)分析感謝的,請(qǐng)看這篇文章:最新商家后臺(tái)Anti-Content參數(shù)逆向分析與純算法還原

最新PDD批發(fā)Anti-Content參數(shù)逆向分析與算法還原,Python爬蟲實(shí)戰(zhàn),算法,python

2. 接口分析

主要通過商品搜索入口展開分析,然后到商品詳情。首先,還是老規(guī)矩打開網(wǎng)站隨便找個(gè)商品搜索一下,不出意料開局也是給了我一張圖,據(jù)說多多的批發(fā)目前的風(fēng)控是極其強(qiáng)的,我就分析測試了一下,黑了我一個(gè)號(hào)?。?!

如果你看到你的頁面一直是提示操作太過頻繁,請(qǐng)稍后再試!之后頁面就試一片空白,所有的功能都用不了

最新PDD批發(fā)Anti-Content參數(shù)逆向分析與算法還原,Python爬蟲實(shí)戰(zhàn),算法,python

這個(gè)滑塊的話,問題不大。有實(shí)力的話可以分析研究一下。我的話,沒有實(shí)力,直接頁面手動(dòng)拖動(dòng)一下,不然接口后續(xù)請(qǐng)求基本如下:

{result":{“verifyAuthToken”:“309dYy7ZgpWuk00cOyrgcQ3bed9a9ba4fdagfc7”},“error code”:54001, “error msa”:“”}

在此過程中我發(fā)現(xiàn)了一個(gè)特別迷惑的行為,就是出現(xiàn)滑塊之后,網(wǎng)站頁面,并沒有彈出滑塊的圖,但是重新執(zhí)行程序,接口不出滑塊,正??梢哉?qǐng)求到數(shù)據(jù)

我不知道是不是session的問題,但是就算重新執(zhí)行程序,過程中比如在搜索提交一定次數(shù)后,同樣會(huì)再次出現(xiàn)滑塊反饋

直到最后,你的網(wǎng)頁它也給你彈出了滑塊,這個(gè)時(shí)候,更夢(mèng)幻的就來了,你會(huì)發(fā)現(xiàn)瀏覽器觸發(fā)一次滑塊后,直接手過一下,拿參數(shù)下來用后續(xù)不會(huì)再出滑塊

為了驗(yàn)證這個(gè)問題,我掛了程序一段時(shí)間,訪問正常、搜索正常、詳情頁商品數(shù)據(jù)獲取正常

說了這么多題外話,只是為了給大家一點(diǎn)踩過的坑。下面我們還是回到正題,如下所示:

最新PDD批發(fā)Anti-Content參數(shù)逆向分析與算法還原,Python爬蟲實(shí)戰(zhàn),算法,python

參數(shù)沒有啥加密的,主要的還是頭部這個(gè)Anti-Content的參數(shù)加密,解決了它就邁過了第一重大山

最新PDD批發(fā)Anti-Content參數(shù)逆向分析與算法還原,Python爬蟲實(shí)戰(zhàn),算法,python

再看一下響應(yīng)數(shù)據(jù),圖中標(biāo)注的字段在詳情頁接口請(qǐng)求中會(huì)用到

3. 分析與扣代碼

跟商家端一樣,我們搜索參數(shù),然后斷點(diǎn)開始調(diào)試分析。這里還是Webpack,所以我們找到入口,把自執(zhí)行函數(shù)扣下來,Webpack最基本的組成就是自執(zhí)行函數(shù)跟模塊加載器!

之后把函數(shù)的實(shí)參,全部導(dǎo)出來放到自執(zhí)行調(diào)用函數(shù)下,因?yàn)楸旧碚{(diào)用執(zhí)行的就是一堆函數(shù),只不過都是索引的方式

最新PDD批發(fā)Anti-Content參數(shù)逆向分析與算法還原,Python爬蟲實(shí)戰(zhàn),算法,python

分析調(diào)試找到自執(zhí)行函數(shù),把代碼扣出來,如下所示:

!function(e) {
    function t(t) {
        for (var n, o, d = t[0], f = t[1], i = t[2], u = 0, s = []; u < d.length; u++)
            o = d[u],
            Object.prototype.hasOwnProperty.call(c, o) && c[o] && s.push(c[o][0]),
            c[o] = 0;
        for (n in f)
            Object.prototype.hasOwnProperty.call(f, n) && (e[n] = f[n]);
        for (l && l(t); s.length; )
            s.shift()();
        return a.push.apply(a, i || []),
        r()
    }
    function r() {
        for (var e, t = 0; t < a.length; t++) {
            for (var r = a[t], n = !0, o = 1; o < r.length; o++) {
                var f = r[o];
                0 !== c[f] && (n = !1)
            }
            n && (a.splice(t--, 1),
            e = d(d.s = r[0]))
        }
        return e
    }
    var n = {}
      , o = {
        21: 0
    }
      , c = {
        21: 0
    }
      , a = [];
    function d(t) {
        if (n[t])
            return n[t].exports;
        var r = n[t] = {
            i: t,
            l: !1,
            exports: {}
        };
        return e[t].call(r.exports, r, r.exports, d),
        r.l = !0,
        r.exports
    }
    d.e = function(e) {
        var t = [];
        o[e] ? t.push(o[e]) : 0 !== o[e] && {
            1: 1,
            10: 1,
            11: 1,
            12: 1,
            14: 1,
            15: 1,
            17: 1
        }[e] && t.push(o[e] = new Promise((function(t, r) {
            for (var n = "static/css/" + ({
                7: "AccountCenter",
                8: "Activity",
                9: "BestGoods",
                10: "Cart",
                11: "GoodsDetail",
                12: "GoodsDropShipping",
                13: "Home",
                14: "Mall",
                15: "MallSearch",
                16: "NotFound",
                17: "Order",
                18: "Payment",
                19: "Search"
            }[e] || e) + "." + {
                0: "31d6cfe0d",
                1: "1bb732cb7",
                2: "31d6cfe0d",
                3: "31d6cfe0d",
                4: "31d6cfe0d",
                5: "31d6cfe0d",
                6: "31d6cfe0d",
                7: "31d6cfe0d",
                8: "31d6cfe0d",
                9: "31d6cfe0d",
                10: "86909bf59",
                11: "1405928aa",
                12: "9eff41d5d",
                13: "31d6cfe0d",
                14: "941e90c52",
                15: "86909bf59",
                16: "31d6cfe0d",
                17: "07dca30ce",
                18: "31d6cfe0d",
                19: "31d6cfe0d",
                23: "31d6cfe0d",
                24: "31d6cfe0d",
                25: "31d6cfe0d",
                26: "31d6cfe0d",
                27: "31d6cfe0d",
                28: "31d6cfe0d",
                29: "31d6cfe0d",
                30: "31d6cfe0d"
            }[e] + ".chunk.css", o = d.p + n, c = document.getElementsByTagName("link"), a = 0; a < c.length; a++) {
                var f = (u = c[a]).getAttribute("data-href") || u.getAttribute("href");
                if ("stylesheet" === u.rel && (f === n || f === o))
                    return t()
            }
            var i = document.getElementsByTagName("style");
            for (a = 0; a < i.length; a++) {
                var u;
                if ((f = (u = i[a]).getAttribute("data-href")) === n || f === o)
                    return t()
            }
            var l = document.createElement("link");
            l.rel = "stylesheet",
            l.type = "text/css",
            l.onload = t,
            l.onerror = function(t) {
                var n = t && t.target && t.target.src || o
                  , c = new Error("Loading CSS chunk " + e + " failed.\n(" + n + ")");
                c.request = n,
                r(c)
            }
            ,
            l.href = o,
            document.getElementsByTagName("head")[0].appendChild(l)
        }
        )).then((function() {
            o[e] = 0
        }
        )));
        var r = c[e];
        if (0 !== r)
            if (r)
                t.push(r[2]);
            else {
                var n = new Promise((function(t, n) {
                    r = c[e] = [t, n]
                }
                ));
                t.push(r[2] = n);
                var a, f = document.createElement("script");
                f.charset = "utf-8",
                f.timeout = 120,
                d.nc && f.setAttribute("nonce", d.nc),
                f.src = function(e) {
                    return d.p + "static/js/" + ({
                        7: "AccountCenter",
                        8: "Activity",
                        9: "BestGoods",
                        10: "Cart",
                        11: "GoodsDetail",
                        12: "GoodsDropShipping",
                        13: "Home",
                        14: "Mall",
                        15: "MallSearch",
                        16: "NotFound",
                        17: "Order",
                        18: "Payment",
                        19: "Search"
                    }[e] || e) + "." + {
                        0: "f10cbb13",
                        1: "1f11793f",
                        2: "377e6d6e",
                        3: "35ce66b2",
                        4: "067dc63d",
                        5: "faf75b50",
                        6: "c87ff2b9",
                        7: "5a36fa8d",
                        8: "3e335bc4",
                        9: "419b7116",
                        10: "3088d3ab",
                        11: "39a585d4",
                        12: "d07a6c4a",
                        13: "20c6d848",
                        14: "30a72180",
                        15: "53f0e801",
                        16: "bd04a08e",
                        17: "319b16be",
                        18: "135c3c2b",
                        19: "66b54e82",
                        23: "c46b72b3",
                        24: "bcfa92ac",
                        25: "dbb47e8b",
                        26: "8b9ca1c3",
                        27: "1e9746e3",
                        28: "73b775ab",
                        29: "c13c09f3",
                        30: "ca572efb"
                    }[e] + ".chunk.js"
                }(e);
                var i = new Error;
                a = function(t) {
                    f.onerror = f.onload = null,
                    clearTimeout(u);
                    var r = c[e];
                    if (0 !== r) {
                        if (r) {
                            var n = t && ("load" === t.type ? "missing" : t.type)
                              , o = t && t.target && t.target.src;
                            i.message = "Loading chunk " + e + " failed.\n(" + n + ": " + o + ")",
                            i.name = "ChunkLoadError",
                            i.type = n,
                            i.request = o,
                            r[1](i)
                        }
                        c[e] = void 0
                    }
                }
                ;
                var u = setTimeout((function() {
                    a({
                        type: "timeout",
                        target: f
                    })
                }
                ), 12e4);
                f.onerror = f.onload = a,
                document.head.appendChild(f)
            }
        return Promise.all(t)
    }
    ,
    d.m = e,
    d.c = n,
    d.d = function(e, t, r) {
        d.o(e, t) || Object.defineProperty(e, t, {
            enumerable: !0,
            get: r
        })
    }
    ,
    d.r = function(e) {
        "undefined" !== typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
            value: "Module"
        }),
        Object.defineProperty(e, "__esModule", {
            value: !0
        })
    }
    ,
    d.t = function(e, t) {
        if (1 & t && (e = d(e)),
        8 & t)
            return e;
        if (4 & t && "object" === typeof e && e && e.__esModule)
            return e;
        var r = Object.create(null);
        if (d.r(r),
        Object.defineProperty(r, "default", {
            enumerable: !0,
            value: e
        }),
        2 & t && "string" != typeof e)
            for (var n in e)
                d.d(r, n, function(t) {
                    return e[t]
                }
                .bind(null, n));
        return r
    }
    ,
    d.n = function(e) {
        var t = e && e.__esModule ? function() {
            return e.default
        }
        : function() {
            return e
        }
        ;
        return d.d(t, "a", t),
        t
    }
    ,
    d.o = function(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
    }
    ,
    d.p = "https://mms-static.pddpic.com/wholesale/",
    d.oe = function(e) {
        throw console.error(e),
        e
    }
    ;
    var f = window.webpackJsonp = window.webpackJsonp || []
      , i = f.push.bind(f);
    f.push = t,
    f = f.slice();
    for (var u = 0; u < f.length; u++)
        t(f[u]);
    var l = i;
    r()
}([]);

如果加載器函數(shù)與執(zhí)行對(duì)象在一個(gè)文件中的Webpack就會(huì)比較好扣,首先,在函數(shù)內(nèi)找到模塊加載器的特征位置,代碼如下所示:

function d(t) {
    if (n[t])
        return n[t].exports;
    var r = n[t] = {
        i: t,
        l: !1,
        exports: {}
    };
    return e[t].call(r.exports, r, r.exports, d),
    r.l = !0,
    r.exports
}

上面這個(gè)t傳入的可以是索引和對(duì)象的key,參數(shù)表示的是列表或?qū)ο蟮男螀?,接下來需要把目?biāo)扣出來,自執(zhí)行函數(shù)只是其中的一步,傳入的t才是關(guān)鍵,如下跳轉(zhuǎn):

最新PDD批發(fā)Anti-Content參數(shù)逆向分析與算法還原,Python爬蟲實(shí)戰(zhàn),算法,python

直接把所有調(diào)用模塊導(dǎo)出來,放到自執(zhí)行的[]內(nèi),如下所示:

最新PDD批發(fā)Anti-Content參數(shù)逆向分析與算法還原,Python爬蟲實(shí)戰(zhàn),算法,python

最后我們將算法的調(diào)用集成到Python程序中測試一下效果,如下:

最新PDD批發(fā)Anti-Content參數(shù)逆向分析與算法還原,Python爬蟲實(shí)戰(zhàn),算法,python文章來源地址http://www.zghlxwxcb.cn/news/detail-853288.html

到了這里,關(guān)于最新PDD批發(fā)Anti-Content參數(shù)逆向分析與算法還原的文章就介紹完了。如果您還想了解更多內(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)文章

  • 【驗(yàn)證碼逆向?qū)凇繑?shù)美驗(yàn)證碼全家桶逆向分析以及 AST 獲取動(dòng)態(tài)參數(shù)

    本文章中所有內(nèi)容僅供學(xué)習(xí)交流使用,不用于其他任何目的,不提供完整代碼,抓包內(nèi)容、敏感網(wǎng)址、數(shù)據(jù)接口等均已做脫敏處理,嚴(yán)禁用于商業(yè)用途和非法用途,否則由此產(chǎn)生的一切后果均與作者無關(guān)! 本文章未經(jīng)許可禁止轉(zhuǎn)載,禁止任何修改后二次傳播,擅自使用本文講

    2024年02月03日
    瀏覽(27)
  • 網(wǎng)易易盾——推理拼圖驗(yàn)證碼參數(shù)逆向分析和調(diào)用

    網(wǎng)易易盾——推理拼圖驗(yàn)證碼參數(shù)逆向分析和調(diào)用

    本篇文章主要是對(duì)驗(yàn)證的提交參數(shù)進(jìn)行逆向分析,成功演示結(jié)果在最底部 目標(biāo)網(wǎng)址 抓包 提交分析 拖動(dòng)提交參數(shù) 以下幾個(gè)參數(shù)是會(huì)變動(dòng)的,所以我們主要是對(duì)這幾個(gè)參數(shù)進(jìn)行分析 我們先直接拖動(dòng)驗(yàn)證一下,看下請(qǐng)求發(fā)送,會(huì)發(fā)送一個(gè)check請(qǐng)求,再查看一下請(qǐng)求堆棧調(diào)用,所

    2024年02月13日
    瀏覽(19)
  • 【VX小程序逆向】房*下小程序pseusign參數(shù)分析

    【VX小程序逆向】房*下小程序pseusign參數(shù)分析

    使用 Charles 軟件進(jìn)行抓包,詳細(xì)過程就不細(xì)說了,直接貼上抓包結(jié)果 經(jīng)過來回刪除恢復(fù)參數(shù)的方式,得出 pseusign 參數(shù)尤為重要,直接分析小程序代碼。 使用微信小程序開發(fā)工具導(dǎo)入解包后的代碼,直接編譯運(yùn)行,會(huì)得到以下錯(cuò)誤信息 可以大概看懂是插件過期的意思,那么就

    2024年02月04日
    瀏覽(25)
  • 【Python爬蟲案例】抖音下載視頻+X-Bogus參數(shù)JS逆向分析

    【Python爬蟲案例】抖音下載視頻+X-Bogus參數(shù)JS逆向分析

    選擇自己感興趣的抖音博主,本次以“經(jīng)典老歌【車載U盤】”為例 每次請(qǐng)求的頁面會(huì)有很多接口,需要對(duì)接口進(jìn)行篩選: 第一步篩選XHR篩選 第二步篩選URL中帶有post 通過篩選play_add值找到視頻的地址 通過對(duì)比兩次請(qǐng)求發(fā)現(xiàn)只有X-Bogus數(shù)值會(huì)有變化,max_cursor是用翻頁,后文再

    2024年03月15日
    瀏覽(26)
  • 【逆向】03-20擴(kuò)大節(jié) c++代碼完成 ;類當(dāng)作函數(shù)參數(shù)卻調(diào)用了析構(gòu)函數(shù)疑難分析

    若要看PE結(jié)構(gòu)操作最新代碼,點(diǎn)擊主頁查看?。?? 和上一節(jié)的代碼相比,本文章主要修復(fù)了上一篇文章代碼中PE類中的Analyze函數(shù),這樣不管是Before_Stretch_Data還是Stretch_Data,Shrink_Data,在這個(gè)函數(shù)中都可以分析出PE結(jié)構(gòu) 另外新添加了函數(shù)Expand_Section函數(shù),可以自動(dòng)擴(kuò)大最后一個(gè)

    2024年02月07日
    瀏覽(18)
  • 拼多多anti-token分析

    拼多多anti-token分析

    前言:拼多多charles抓包分析發(fā)現(xiàn)跟商品相關(guān)的請(qǐng)求頭里都帶了一個(gè)anti-token的字段且每次都不一樣,那么下面的操作就從分析anti-token開始了 1.jadx反編譯直接搜索 選中跟http相關(guān)的類對(duì)這個(gè)方法進(jìn)行打印堆棧 結(jié)合堆棧方法調(diào)用的情況找到具體anti-token是由攔截器類f.a方法調(diào)用的

    2024年02月10日
    瀏覽(14)
  • Nike登錄的acw_sc__v2參數(shù)逆向詳細(xì)思路分析(非常簡單,建議入手)含AST解混淆代碼

    Nike登錄的acw_sc__v2參數(shù)逆向詳細(xì)思路分析(非常簡單,建議入手)含AST解混淆代碼

    最近周末閑著無事,看了一下Nike的登錄,發(fā)現(xiàn)連環(huán)境都不用補(bǔ)acw_sc__v2這個(gè)參數(shù),分享出來給大家趣味性娛樂一下 打開F12抓包看看登錄 老樣子復(fù)制curl給抓到Postman里面去分析一下 具體的參數(shù)查找就不演示了(就是簡單的刪參數(shù)看看啥需要啥不需要)。 最后可以發(fā)現(xiàn),cookie只

    2024年02月09日
    瀏覽(23)
  • 實(shí)戰(zhàn) 逆向最新黃鳥抓包軟件

    實(shí)戰(zhàn) 逆向最新黃鳥抓包軟件

    觀眾器者為良匠,觀眾病者為良醫(yī)。這篇文章分析了知名抓包軟件HttpCanary高級(jí)功能的使用限制,使用了許多實(shí)用的工具,過程寫的盡可能的詳細(xì),希望對(duì)大家有所幫助。 筆者實(shí)踐環(huán)境: pixel 6 Android 12 frida 15.1.27 HttpCanary v3.3.5 在jadx中查看原包,檢查軟件是否加固 由于包下的

    2024年02月06日
    瀏覽(15)
  • dx滑塊逆向及ac參數(shù)逆向

    dx滑塊逆向及ac參數(shù)逆向

    網(wǎng)址:aHR0cHM6Ly93d3cuZGluZ3hpYW5nLWluYy5jb20vYnVzaW5lc3MvY2FwdGNoYQ== 目錄 聲明? 本文章中所有內(nèi)容僅供學(xué)習(xí)交流使用,不用于其他任何目的,不提供完整代碼,抓包內(nèi)容、敏感網(wǎng)址、數(shù)據(jù)接口等均已做脫敏處理,嚴(yán)禁用于商業(yè)用途和非法用途,否則由此產(chǎn)生的一切后果均與作者無關(guān)! 本

    2024年02月06日
    瀏覽(17)
  • axios請(qǐng)求頭設(shè)置常見Content-Type和對(duì)應(yīng)參數(shù)的處理

    axios請(qǐng)求頭設(shè)置常見Content-Type和對(duì)應(yīng)參數(shù)的處理

    首先要明確的一點(diǎn)是,我們?cè)陧?xiàng)目中調(diào)用接口,通常是以對(duì)象的數(shù)據(jù)格式傳給自己封裝的http請(qǐng)求函數(shù)的。 現(xiàn)在的前后端分離項(xiàng)目基本上都是使用的這個(gè)進(jìn)行數(shù)據(jù)傳遞。 axios默認(rèn)Content-type是采用application/json;charset=UTF-8,無需設(shè)置直接把對(duì)象傳進(jìn)去即可 當(dāng)然, 也可以在請(qǐng)求攔截

    2023年04月09日
    瀏覽(28)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包