日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

维普期刊 瑞数5

發布時間:2024/3/26 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 维普期刊 瑞数5 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 鄭重聲明:本項目的所有代碼和相關文章, 僅用于經驗技術交流分享,禁止將相關技術應用到不正當途徑,因為濫用技術產生的風險與本人無關。

加載流程

url:aHR0cDovL2xpYi5jcXZpcC5jb20vUWlrYW4vU2VhcmNoL0luZGV4P2Zyb209aW5kZXg=

簡單說一下瑞數5代的加載流程,首先打開一個無痕瀏覽器,輸入維普的url ,查看其加載過程

可以看到,當在一個干凈的瀏覽器環境中第一次請求時,會首先返回一個412頁面,這個412頁面又加載了一個js文件,然后才返回了首頁的200頁面,我們可以先觀察兩個 Index?from=index 有什么不同

第一個Index?from=index

第二個Index?from=index

很明顯,他們的不同之處在于cookie,其中GW1gelwM5YZuS是服務器返回的,而GW1gelwM5YZuT則是js代碼生成的,也就是說我們必須破解GW1gelwM5YZuT的生成過程

定位cookie

定位cookie最快的方式自然是hook了,首先新開一個無痕窗口,然后打一個事件斷點,輸入url回車

斷點斷住后,在控制臺注入以下代碼

(function() {'use strict';let hookCookie = function (key) {'use strict';var cookie_str = document.cookie;Object.defineProperty(Document.prototype, 'cookie', {get: function () {return cookie_str;},set: function (val) {console.log('捕獲到cookie設置-->', val);if (val.indexOf(key) !== -1) debugger;let addCookie = val.split('; ')[0]addCookie = addCookie.split('=')let cookie_object = {}cookie_str.split('; ').map(function (v) {v = v.split('=')cookie_object[v[0]] = v[1]})cookie_object[addCookie[0]] = addCookie[1]let cookie_arr = []for (let k in cookie_object) {k = k + "=" + cookie_object[k] + '; 'cookie_arr.push(k)}cookie_str = cookie_arr.join('')return cookie_str}}); } hookCookie('GW1gelwM5YZuT'); })();

斷點斷住后,跟棧調試

通過跟棧找到cookie生成位置,這是個vm文件,一般這種文件都是eval生成的

繼續跟棧到412頁面,找到eval函數,其中_$FP就是vm中的代碼

跟到這里,我們已經知道cookie生成的大致流程了,當不攜帶cookie訪問首頁時,服務器返回一個412頁面,412頁面會執行了一些js代碼,生成了_$FP(字符串類型的js代碼),然后調用eval函數將_$FP給執行了,生成了vm文件,vm文件執行后生成了cookie。

扣代碼

紅色標注的位置全部都要扣下來

補環境

在瑞數的代碼還未執行eval之前,可以使用proxy代理補,在執行eval后就不能使用proxy了,為什么不能使用了,懂的都懂,既然不能使用proxy了,那我怎么知道他檢測了那些環境呢,其實很簡單,就像華為牛過河的面試題的答案一樣,他是直接過,我是直接調,兩個字:硬剛

  • 第一步復制剛才那份412頁面的所有代碼,保存到本地為rs.html(記住代碼不要格式化)

  • 第二步在rs.html的頭部加入以下代碼,這么做是為什么,大家應該懂我意思吧

    <script>eval_= eval;eval = function(s){debugger;return eval_(e)}eval.toString = function(){return 'function eval() { [native code] }'}// 保持環境的一致性Object.defineProperty(window,'indexedDB',{ger(){return underline;}}) ......</script>
  • 第三步,使用fiddler本地替換,當斷點斷住之后,直接調試就可以了,看他檢測了什么就補什么(有一些是可以不補的,這就要看你對瀏覽器的了解了)

  • 至于怎么調試最快最有效就是基礎知識了,如果你調試技巧足夠嫻熟,一天就能補出所有環境,當然后續還有很多坑

  • 可以參考挽風大佬的文章

如果你自己生成的cookie有173位了,那你因該可以拿到首頁的200,如果生成的cookie有279位(記得模擬load事件執行),則可以拿到搜索接口的200,記住cookie的時效性非常短,如果你想在node中生成,然后復制到python腳本中去請求是行不通的。

搜索接口后綴生成

在搜索接口有一個后綴,他其實是重寫了XMLHttpRequest.prototype.open方法,只要你調用這個方法,就會自動為url加上后綴

如果你生成的cookie沒問題的話,你可以直接用proxy代理出后綴生成的檢測點

成果展示

總結

以上是生活随笔為你收集整理的维普期刊 瑞数5的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。