成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

請求網(wǎng)頁時,怎么給我返回了一段 JavaScript 代碼

wthee / 2657人閱讀

摘要:當(dāng)斷點被執(zhí)行到時,你就可以查看右邊的調(diào)用棧了,很容易就找到這個地方這個也是一個定時執(zhí)行,不過他只執(zhí)行一次,相當(dāng)于定時炸彈。本文僅用于交流學(xué)習(xí),請勿用于非法用途,后果自負(fù)首發(fā)地址請求網(wǎng)頁時,怎么給我返回了一段代碼

今天給大家?guī)淼氖且粋€論壇網(wǎng)站,牛仔俱樂部-努比亞社區(qū),

網(wǎng)址為:https://bbs.nubia.cn/

如果你想要獲取這個網(wǎng)站的源代碼的話,必須要先獲取一個 cookie,其字段名為:acw_sc__v2,你是不是不相信?爬取網(wǎng)站還需要獲取 cookie 值才可以?說實話,我剛開始爬的時候我也不相信,直到我運行請求代碼,一看,給我返回這個:

這是什么啊,一段 JavaScript 代碼,很容易地就可以看到下面有個 setCookie 的方法,這不就是我剛才說的需要獲取的 cookie 的字段嗎?如果你看到這,留下了沒技術(shù)的眼淚的話?別怕,我勸你擦干眼淚,繼續(xù)看下去,你會發(fā)現(xiàn)新大陸!

我們首先在 chrome 看看這里網(wǎng)站的請求先,打開 chrome,打開開發(fā)者工具,輸入網(wǎng)址:https://bbs.nubia.cn/(需要先...,你可以看到下面這個東西:

是不是呆住了?這是debug,明明什么都沒按啊,如果你按跳出這個函數(shù)的話,可以暫時跳出,不過等到運行多幾行代碼的話,他會運行到一個無限執(zhí)行 debug 的函數(shù),讓你永無翻身之日,一直在 debug 轉(zhuǎn)動。

那怎么辦?莫慌,其實這里運行代碼就是我們在上面第一次請求這個網(wǎng)站給我們返回的 JavaScript 代碼,那么我們可以把剛才響應(yīng)回來的代碼復(fù)制出來,寫成 html 文件,使用 chrome 瀏覽器打開。

如果你把 那段代碼展開的話,打開的時候就會無限進(jìn)行刷新,直到瀏覽器崩潰。

這里是代碼在執(zhí)行過程中使用正則檢測你把代碼展開了,所以就會無限進(jìn)行刷新,這叫做內(nèi)存爆破,是不是又 get 新知識?

所以我們直接原樣復(fù)制進(jìn)去,在打開 chrome 進(jìn)行調(diào)試。

但是,當(dāng)我們一打開 開發(fā)者工具,還是會立刻彈出 debug 頁面

這又是為什么呢?我們根據(jù)右邊的調(diào)用??纯词窃鯓訄?zhí)行的,查看調(diào)用棧,可以看到這個函數(shù):

如果你是學(xué)習(xí)過 JavaScript 的話,很容易就知道 setInterval 是個設(shè)置每隔一段時間就執(zhí)行相應(yīng)操作的函數(shù)。所以他這里每隔一段時間就會執(zhí)行函數(shù),用于檢測用戶有沒有打開開發(fā)者工具,這個太猛了,具體原理我現(xiàn)在還不知道,如果你知道的不防在下面留言分享給大家。

知道了,之后,我們直接在原文件找到這個定時設(shè)置語句給刪除就可以了。刪除了之后,還是會執(zhí)行這個 debug 語句,我們繼續(xù)把這個執(zhí)行給刪除。

現(xiàn)在就不會出現(xiàn) debug 了,但是有一個新的問題,出現(xiàn),頁面會不斷刷新,也是一個定時操作,這時該怎么辦呢?因為是一個刷新操作,每次刷新必然會執(zhí)行里面的 JavaScript 代碼,所以不妨隨便打個斷點,看看調(diào)用棧,這里我比較有經(jīng)驗,所以就在這里打了個斷點

因為這個 relaod 函數(shù)就是一個刷新頁面的函數(shù),所以直接在這里點擊,可以肯定這個函數(shù)會被執(zhí)行,如果你打的斷點沒有被執(zhí)行,可以多打幾個斷點,總會被執(zhí)行的,這個不需要擔(dān)心。

當(dāng)斷點被執(zhí)行到時,你就可以查看右邊的調(diào)用棧了,很容易就找到這個地方

這個 setTimeout 也是一個定時執(zhí)行,不過他只執(zhí)行一次,相當(dāng)于定時炸彈。又因為每次都會 reload,所以這個炸彈在每次刷新的時候就會繼續(xù)新的炸彈,才會有剛才的不斷刷新,了解了原理之后,那么我們就把這個 setTimeout 給刪除即可。

這時候,再次刷新網(wǎng)頁,就什么阻力都沒有了,是不是感覺來到這一步不容易?哈哈,爬蟲就是這樣,與反爬死坑到底,不服就干,看誰更有耐心。

這時候終于可以開始我們的調(diào)試之旅了,因為知道這個 JavaScript 執(zhí)行之后會返回一個 cookie 值,所以接下來就是尋找生成的位置,如果你熟練的話,可以利用二分法來找,具體怎樣找自己探索,因為我也不是很熟練。如果你不熟練的話,可以學(xué)我一樣,因為代碼就幾百行,可以直接從第一行開始找。

如果你認(rèn)真找,不用多久,很快就可以發(fā)現(xiàn)這個,這個 arg2 就是我們需要找的 cookie 的值,所以接下來可以在這里打斷點,看看具體的執(zhí)行步驟。

可以看到,通過傳一參數(shù),使用這個函數(shù)就可以完成加密了,根據(jù)這個函數(shù)的函數(shù)名是 hexXor,可以知道是一個 Xor 加密,想知道原理的可以看看這篇文章:http://www.ruanyifeng.com/blo...,我們也可以根據(jù) JavaScript 代碼直接轉(zhuǎn)成 python 代碼也可以,不難。

通過調(diào)試發(fā)現(xiàn),這里面需要兩個參數(shù),一個是加密的信息,一個是key

加密的信息是在很容易就發(fā)現(xiàn),是從這里生成的

所以也可以在這里打斷點,再刷新一下,就可以看到加密信息是由這個函數(shù)生成的。

這里的 JavaScript 代碼也很容易,也可以直接翻譯成 python 代碼。而其參數(shù)需要的是 arg1,這個變量在代碼第一行就聲明了,所以在獲取的時候,可以使用正則獲取。

接著就是 key 的獲取了。直接搜索這個 key 的變量,很容易就找到這個

加密函數(shù)很長,但是也是可以自己轉(zhuǎn) python的,難度也不大。

在經(jīng)過我多次測試之后,發(fā)現(xiàn)這個 key 是固定的,所以無需自己實現(xiàn)這個函數(shù),可以直接取這個值即可。

現(xiàn)在大功告成,已經(jīng)可以獲得所需要的 cookie 值了,是不是覺得非常不可思議,一路走過來都不容易。

不過這里有個 bug,就是有時還是獲取到 JavaScript 代碼,但是多運行幾次還是可以正常獲取到 html 源碼的,由于自己只是獲取這個值而已,能成功即可,所以沒有研究下去,如果你知道原因,也可以在留言區(qū)告訴我。

最后總結(jié)下遇到各種挑戰(zhàn):

代碼展開會無限刷新,內(nèi)存爆破,如果你認(rèn)真自己調(diào)試的話,會發(fā)現(xiàn)里面有幾個正則,有些是用來匹配函數(shù)的,用于判斷有沒有展開代碼的,展開了就代表有人想搞代碼了,所以就會無限刷新。

設(shè)置定時與刷新網(wǎng)頁,使網(wǎng)頁無限刷新。這個對我們來說調(diào)試問題不大,畢竟每次刷新我們都可以斷點調(diào)試代碼

設(shè)置定時檢測有沒有打開開發(fā)者工具,這個才是最厲害的,檢測到的話就胡無限 debug。

最后就沒有啦,如果你需要源碼的話,可以在我的 GitHub 上獲取,地址為:https://github.com/SergioJune...

如果對你有用的話,還請給個star,我會一直更新下去,你有什么需要破解的網(wǎng)站也可以提issue。

目前還更新了拼多多的搜索參數(shù) anti_content 和另一個更加厲害的 cookie 反爬,也是屬于這個 Incapsula-CDN 的,難度比今天這個難上不少,由于個人問題,暫時只能每周講解一個,請諒解。

原創(chuàng)不易,希望能給個贊,給個star,支持下繼續(xù)寫下去。

本文僅用于交流學(xué)習(xí),請勿用于非法用途,后果自負(fù)!

首發(fā)地址:請求網(wǎng)頁時,怎么給我返回了一段 JavaScript 代碼

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://hztianpu.com/yun/43413.html

相關(guān)文章

  • 如何能正常獲取17track物流網(wǎng)站的物流信息?

    摘要:需要的數(shù)據(jù)就是這個快遞軌跡,看到上面的好像沒什么問題,挺容易的,這還有什么比這爽的,趕緊使用請求一波。由于說過了,就不多說了,突破了繼續(xù)刷新也會遇到一些未定義的,也是同樣扣代碼,就不多說了,這里說另一個。 原本昨天就要發(fā)文章的了,由于之前的pdd文章被投訴了,刪除了,影響心情的同時也不敢亂發(fā)文章了,所以就暫時歇了一天,也改了另外一個網(wǎng)站,就是今天的物流網(wǎng)站。如果大家某天看不到我發(fā)文了,...

    mingzhong 評論0 收藏0
  • JSONP原理剖析

    摘要:運行一下頁面,成功彈出提示窗口,的執(zhí)行全過程順利完成到這里為止的話,相信你已經(jīng)能夠理解的客戶端實現(xiàn)原理了吧剩下的就是如何把代碼封裝一下,以便于與用戶界面交互,從而實現(xiàn)多次和重復(fù)調(diào)用。 先說說JSONP是怎么產(chǎn)生的: 其實網(wǎng)上關(guān)于JSONP的講解有很多,但卻千篇一律,而且云里霧里,對于很多剛接觸的人來講理解起來有些困難,小可不才,試著用自己的方式來闡釋一下這個問題,看看是否有幫助。 1、...

    DangoSky 評論0 收藏0
  • 一篇寫給新手入門PHP的文章

    摘要:如果在學(xué)習(xí)過程中有什么問題可以關(guān)注我公眾號琉憶編程庫給我留言。有興趣可以深入學(xué)習(xí)最后附上學(xué)習(xí)的知識結(jié)構(gòu)圖譜,可以按著下面的這個知識結(jié)構(gòu)圖進(jìn)行學(xué)習(xí)不一定完整,更多資料,面試題,都可以關(guān)注公眾號琉憶編程庫獲取。 你好,是我——琉憶。PHP程序員面試系列圖書作者。 作為一名PHP開發(fā)者過來人,也是經(jīng)歷了菜鳥到老手的過程,在此給那些想學(xué)PHP的同學(xué)指條路,即使你是轉(zhuǎn)行學(xué)PHP一樣可以學(xué)會PHP...

    Ilikewhite 評論0 收藏0
  • JavaScript系列(四) - 收藏集 - 掘金

    摘要:函數(shù)式編程前端掘金引言面向?qū)ο缶幊桃恢币詠矶际侵械闹鲗?dǎo)范式。函數(shù)式編程是一種強調(diào)減少對程序外部狀態(tài)產(chǎn)生改變的方式。 JavaScript 函數(shù)式編程 - 前端 - 掘金引言 面向?qū)ο缶幊桃恢币詠矶际荍avaScript中的主導(dǎo)范式。JavaScript作為一門多范式編程語言,然而,近幾年,函數(shù)式編程越來越多得受到開發(fā)者的青睞。函數(shù)式編程是一種強調(diào)減少對程序外部狀態(tài)產(chǎn)生改變的方式。因此,...

    cfanr 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<