成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

請(qǐng)求網(wǎng)頁(yè)時(shí),怎么給我返回了一段 JavaScript 代碼

wthee / 2584人閱讀

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

今天給大家?guī)?lái)的是一個(gè)論壇網(wǎng)站,牛仔俱樂(lè)部-努比亞社區(qū),

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

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

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

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

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

那怎么辦?莫慌,其實(shí)這里運(yùn)行代碼就是我們?cè)谏厦娴谝淮握?qǐng)求這個(gè)網(wǎng)站給我們返回的 JavaScript 代碼,那么我們可以把剛才響應(yīng)回來(lái)的代碼復(fù)制出來(lái),寫(xiě)成 html 文件,使用 chrome 瀏覽器打開(kāi)。

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

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

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

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

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

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

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

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

因?yàn)檫@個(gè) relaod 函數(shù)就是一個(gè)刷新頁(yè)面的函數(shù),所以直接在這里點(diǎn)擊,可以肯定這個(gè)函數(shù)會(huì)被執(zhí)行,如果你打的斷點(diǎn)沒(méi)有被執(zhí)行,可以多打幾個(gè)斷點(diǎn),總會(huì)被執(zhí)行的,這個(gè)不需要擔(dān)心。

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

這個(gè) setTimeout 也是一個(gè)定時(shí)執(zhí)行,不過(guò)他只執(zhí)行一次,相當(dāng)于定時(shí)炸彈。又因?yàn)槊看味紩?huì) reload,所以這個(gè)炸彈在每次刷新的時(shí)候就會(huì)繼續(xù)新的炸彈,才會(huì)有剛才的不斷刷新,了解了原理之后,那么我們就把這個(gè) setTimeout 給刪除即可。

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

這時(shí)候終于可以開(kāi)始我們的調(diào)試之旅了,因?yàn)橹肋@個(gè) JavaScript 執(zhí)行之后會(huì)返回一個(gè) cookie 值,所以接下來(lái)就是尋找生成的位置,如果你熟練的話(huà),可以利用二分法來(lái)找,具體怎樣找自己探索,因?yàn)槲乙膊皇呛苁炀?。如果你不熟練的?huà),可以學(xué)我一樣,因?yàn)榇a就幾百行,可以直接從第一行開(kāi)始找。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

設(shè)置定時(shí)檢測(cè)有沒(méi)有打開(kāi)開(kāi)發(fā)者工具,這個(gè)才是最厲害的,檢測(cè)到的話(huà)就胡無(wú)限 debug。

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

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

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

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

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43413.html

相關(guān)文章

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

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

    mingzhong 評(píng)論0 收藏0
  • JSONP原理剖析

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

    DangoSky 評(píng)論0 收藏0
  • 一篇寫(xiě)給新手入門(mén)PHP的文章

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

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

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

    cfanr 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<