0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

瀏覽器的底層是怎么樣完成一次網(wǎng)絡(luò)請(qǐng)求的

Wildesbeast ? 來(lái)源:今日頭條 ? 作者:IT知識(shí)課堂 ? 2020-02-20 15:49 ? 次閱讀

對(duì)于面試的大部分前端開(kāi)發(fā)者來(lái)說(shuō),對(duì)瀏覽器的了解也算是一知半解,因?yàn)槲覀円婚_(kāi)始前端覺(jué)得,我們開(kāi)發(fā)中通常使用瀏覽器來(lái)顯示和調(diào)試頁(yè)面用的,不會(huì)涉入到太過(guò)的相關(guān)瀏覽器工作原理知識(shí)。

這你就大錯(cuò)特錯(cuò)了,雖然瀏覽器默默的為我們工作,但是有關(guān)瀏覽器的工作原理不但在你就業(yè)前端面試中屬于重中之重,也是在前端優(yōu)化中占有很大比重。作為一個(gè)前端開(kāi)發(fā)如果不了解瀏覽器的工作原理,只能永遠(yuǎn)停留在前端“切圖仔”水平。

PS:前幾天還有個(gè)讀者和小鹿說(shuō),之前看到小鹿朋友圈發(fā)過(guò)這個(gè)這個(gè)導(dǎo)圖,當(dāng)時(shí)沒(méi)當(dāng)回事,第二天面試竟然問(wèn)到了。

學(xué)習(xí)瀏覽器工作原理是為了能夠運(yùn)用到實(shí)際項(xiàng)目中,比如前端的性能優(yōu)化以及錯(cuò)誤排查,都會(huì)涉及到瀏覽器相關(guān)的知識(shí),所以掌握瀏覽器的工作原理是必不可缺的,相信你學(xué)完之后,能夠?qū)δ愕膫€(gè)人能力和見(jiàn)識(shí)會(huì)有很大的提升。

瀏覽器涉及到的知識(shí)點(diǎn)非常多而且非常重要,文章中可能其中有不足和錯(cuò)誤的地方,也歡迎各位指出!

思維導(dǎo)圖

1、瀏覽器的職責(zé)

我們由淺入深的去了解瀏覽器的工作原理。首先學(xué)習(xí)一個(gè)事物要知道它是什么,它要完成一個(gè)什么樣的事情,也就是擁有什么樣的職責(zé)。

對(duì)于瀏覽器來(lái)說(shuō),表面上看來(lái),我們輸入了 URL,然后等待幾秒瀏覽器就展現(xiàn)出我們想要訪問(wèn)的網(wǎng)址內(nèi)容了。對(duì)沒(méi)錯(cuò),這就是瀏覽器的職責(zé)所在。這只是停留在了表面,要想深入知道瀏覽器在這個(gè)階段發(fā)生了什么?需要我們進(jìn)一步探索瀏覽器的工作原理。

所以說(shuō),無(wú)論是面試還是實(shí)際工作中,瀏覽器無(wú)時(shí)不刻和我們打交道。那我們就要從在瀏覽器輸入 URL 開(kāi)始說(shuō)起,直到瀏覽器最后展現(xiàn)出網(wǎng)站內(nèi)容,這個(gè)過(guò)程瀏覽器做了哪些工作,又是如何工作的呢?

我們會(huì)詳細(xì)分為以下幾大模塊進(jìn)行系統(tǒng)的講解:

1、DNS 解析

2、TCP 連接

3、HTTP 請(qǐng)求

4、構(gòu)建 DOM 樹(shù)

5、構(gòu)建 CSSOM 樹(shù)

6、生成渲染樹(shù)

7、合成、繪制

其中有些部分我們之前的文章已經(jīng)分享過(guò),所以也不過(guò)到陳述,到時(shí)候會(huì)鞏固一下,重點(diǎn)我們放在瀏覽器的渲染原理上,這也是我們以后在學(xué)習(xí)前端優(yōu)化中的重點(diǎn)。

2、DNS 解析

在之前的文章 TCP 三次握手中提到,要想得到接收方的 MAC 地址,需要通過(guò)對(duì)方的 IP 地址獲取,對(duì)方的 IP 需要通過(guò) DNS 解析。

2.1 為什么進(jìn)行 DNS 解析?

所謂的 DNS 解析就是將我們輸入在網(wǎng)頁(yè)地址欄的 URL 通過(guò) DNS 解析成 IP 地址。DNS 就是將域名轉(zhuǎn)化成 ip 地址的過(guò)程。那么這個(gè)過(guò)程會(huì)發(fā)生什么呢?和小鹿一起深入探究一下。

2.2 系統(tǒng)緩存查詢

首先瀏覽器會(huì)調(diào)用一個(gè)庫(kù)函數(shù),檢測(cè)本地的 hosts 文件(可以認(rèn)為是電腦本地的一個(gè)地址映射文件),從該文件中查看是否有對(duì)應(yīng)的該域名的 IP 地址,這個(gè)過(guò)程是在系統(tǒng)緩存中查找是否存在該域名對(duì)應(yīng)的 IP 地址。

比如在瀏覽器的地址欄中輸入小鹿的博客網(wǎng)址(www.xiaolu.com),然后回車(chē),此時(shí)瀏覽器拿著這個(gè)域名去本地電腦的一個(gè)名為 hosts 文件中查詢是否存在該域名所對(duì)應(yīng)的 IP 地址,如果有,就返回給瀏覽器,如果沒(méi)有,我們繼續(xù)往下進(jìn)行。

2.3 路由器緩存、ISP 緩存

如果系統(tǒng)緩存沒(méi)有,就會(huì)向 DNS 服務(wù)器發(fā)送請(qǐng)求,而網(wǎng)絡(luò)服務(wù)一般都會(huì)先經(jīng)過(guò)路由器以及網(wǎng)絡(luò)服務(wù)商(電信),所以會(huì)先查詢路由器緩存,然后再查詢 ISP 的 DNS 緩存。

PS:ISP緩存,本身是一種寬帶接入提供商給網(wǎng)頁(yè)批量訪問(wèn)加速的技術(shù)。ISP會(huì)將當(dāng)前訪問(wèn)量較大的網(wǎng)頁(yè)內(nèi)容放到ISP服務(wù)器的緩存中,當(dāng)有新的用戶請(qǐng)求相同內(nèi)容時(shí),可以直接從緩存中發(fā)送相關(guān)信息,不必每次都去訪問(wèn)真正的網(wǎng)站,從而加快了不同用戶對(duì)相同內(nèi)容的訪問(wèn)速度,同時(shí)也能節(jié)省網(wǎng)間流量結(jié)算成本。

2.4 DNS 遞歸查詢

如果路由器緩存和 ISP 的 DNS 緩存還是沒(méi)有的話,我們就進(jìn)行 DNS 遞歸查詢。從根域名服務(wù)器開(kāi)始查詢,然后再到頂級(jí)域名服務(wù)器,最后到主域名服務(wù)器依次查詢。

但是這里有兩種查詢方式,不僅僅有遞歸查詢一種方式,還有一個(gè)查詢方式是迭代查詢,兩種查詢方式的區(qū)別是什么呢?

迭代查詢:DNS 收到請(qǐng)求時(shí),而不是直接返回查詢結(jié)果,而是告訴客戶端另一臺(tái) DNS 服務(wù)器地址。然后客戶端再向這臺(tái)的 DNS 服務(wù)器提交請(qǐng)求,依次循環(huán)。

遞歸查詢:當(dāng) DNS 服務(wù)器收到請(qǐng)求時(shí),就會(huì)檢查 DNS 緩存,如果沒(méi)有就會(huì)詢問(wèn)其他服務(wù)器,并將返回的查詢結(jié)果返回客戶端。

我們前端會(huì)在性能優(yōu)化的使用用到 DNS 的相關(guān)知識(shí),我們?cè)谶@稍微提一下,如何進(jìn)行 DNS 優(yōu)化呢?

DNS 查詢經(jīng)歷很多步驟,查詢很慢。瀏覽器獲取到 IP 地址后,一般都會(huì)加到瀏覽器的緩存中,本地的 DNS 緩存服務(wù)器,也可以去記錄。

另外使用 DNS 負(fù)載均衡,通常我們的網(wǎng)站應(yīng)用各種云服務(wù),DNS 系統(tǒng)根據(jù)每臺(tái)機(jī)器的負(fù)載量,地理位置的限制等等,去提供高效快速的 DNS 解析服務(wù)。

3、TCP 連接

我們通過(guò) DNS 查詢到 IP 地址之后,我們就開(kāi)始打算與服務(wù)器建立連接,為接下來(lái)的數(shù)據(jù)傳輸做準(zhǔn)備,這部分在之前的文章中寫(xiě)的非常詳細(xì),一定要去看哦。

網(wǎng)絡(luò)分層模型

動(dòng)畫(huà):用動(dòng)畫(huà)給面試官解釋 TCP 三次握手過(guò)程

4、HTTP 請(qǐng)求

我們客戶端與服務(wù)端通過(guò) TCP 的三次握手建立連接之后,客戶端開(kāi)始向服務(wù)器主動(dòng)發(fā)起請(qǐng)求。

PS:對(duì)于 HTTP 協(xié)議,我們會(huì)在后邊單獨(dú)拿出一篇文章來(lái)詳細(xì)介紹它的發(fā)展史,這里我們只涉及到 HTTP 的請(qǐng)求相關(guān)的內(nèi)容。

服務(wù)端接收到客戶端發(fā)送的信息,就返回響應(yīng)信息和文件??蛻舳巳绾闻袛喾?wù)端是否成功返回了呢?就需要下列的一些狀態(tài)碼來(lái)識(shí)別,同樣前端做的工作也是通過(guò)狀態(tài)碼來(lái)判斷當(dāng)前響應(yīng)狀態(tài)。

1XX(信息性狀態(tài)碼) : 服務(wù)器正在處理請(qǐng)求中。

2XX (成功狀態(tài)碼): 請(qǐng)求處理完畢。

3XX (重定向狀態(tài)碼): 需要附加操作以完成請(qǐng)求。301:永久性重定向。該狀態(tài)碼表示請(qǐng)求的資源已被分配了新的 URI,以后使用該資源,使用現(xiàn)在所指 URI。302:臨時(shí)性重定向。表示該狀態(tài)碼被分配了新的 URI,希望用戶本次能夠使用新的 URI 訪問(wèn)。304:服務(wù)器資源未改變,可直接使用客戶端未過(guò)期的緩存。

4XX (客戶端錯(cuò)誤狀態(tài)碼): 服務(wù)器無(wú)法處理請(qǐng)求。400:該請(qǐng)求報(bào)文中有語(yǔ)法錯(cuò)誤。403:沒(méi)有資源的訪問(wèn)權(quán)限。404:找不到資源。

5XX (服務(wù)端錯(cuò)誤狀態(tài)碼): 服務(wù)器處理請(qǐng)求出錯(cuò)。500:服務(wù)器發(fā)生錯(cuò)誤503:服務(wù)器超荷載或正在維護(hù)。

遠(yuǎn)程服務(wù)器找到資源并使用 HTTP 響應(yīng)返回該資源,值為 200 的 HTTP 響應(yīng)狀態(tài)表示一個(gè)正確的響應(yīng)。

5、瀏覽器的渲染原理

5.1 構(gòu)建 DOM

服務(wù)器將 HTML、CSS、JS文件轉(zhuǎn)化為 0,1字節(jié)數(shù)據(jù)在網(wǎng)絡(luò)中傳輸給瀏覽器,瀏覽器通過(guò)判斷狀態(tài)碼開(kāi)始接收、解析文件,這開(kāi)始運(yùn)用到瀏覽器的渲染原理。

首先瀏覽器要做的就是獲取 HTTP 的 Request 的 body 中字符串(字符流)的 HTML 文本,進(jìn)行解析并構(gòu)建 DOM 樹(shù)。

將字符流轉(zhuǎn)化為字符串之后,瀏覽器開(kāi)始進(jìn)行詞法分析,雖然這個(gè)名詞我們不熟悉,但是我們要知道,一個(gè) HTML 字符串我們要拆分開(kāi)才能構(gòu)建 DOM 樹(shù),詞法分析就是將字符串拆分成的過(guò)程。將字符串轉(zhuǎn)化為的 token(標(biāo)記) —— token 作為代碼的最小單位,也就是拆分后的結(jié)果,這個(gè)過(guò)程我們稱(chēng)為標(biāo)記化。

我們將字符串拆解之后,然后將這些標(biāo)記轉(zhuǎn)化為 Node 結(jié)點(diǎn),瀏覽器根據(jù)不同的結(jié)點(diǎn)開(kāi)始構(gòu)建一棵 DOM 樹(shù)。這就是整個(gè) DOM 樹(shù)構(gòu)建的過(guò)程,其中還涉及到很多的細(xì)節(jié),比如詞法分析是如何一個(gè)過(guò)程(狀態(tài)機(jī)),有興趣的小伙伴可以詳細(xì)查看英文文檔,在文章底部。

5.2 構(gòu)建 CSSOM 樹(shù)

瀏覽器已經(jīng)把 HTML 文件轉(zhuǎn)化為了 DOM 樹(shù),下面就對(duì) CSS 樣式文件進(jìn)行解析,構(gòu)建成 CSSOM 樹(shù)。這個(gè)過(guò)程和上述構(gòu)建 DOM 樹(shù)的過(guò)程有點(diǎn)相似,但是其中 CSSOM 樹(shù)的構(gòu)建更加的耗時(shí)。下面我們來(lái)看看如何耗時(shí)的?

瀏覽器通過(guò)遞歸的方式 DOM 樹(shù)為結(jié)點(diǎn)設(shè)置樣式。通過(guò)先找到具體的標(biāo)簽,然后遞歸找到設(shè)置的上級(jí)標(biāo)簽,最后確定選擇器選擇的所選標(biāo)簽的樣式。

比如下邊的例子,瀏覽器是如何確定結(jié)點(diǎn)的樣式的呢?

1

2 3

小鹿動(dòng)畫(huà)學(xué)編程,一天一篇?jiǎng)赢?huà)喂飽你!

4
5

你好,小鹿!

6
7 8 9 div span p{ 10 color: red; 11 font-size: 12px; 12 } 13 div { 14 background:red; 15 }

首先在 HTML 中找到 p 標(biāo)簽,一共有兩個(gè)地方,然后按照樣式的繼續(xù)遞歸中找具有父節(jié)點(diǎn)的 p,我們只好把第二個(gè) p 過(guò)濾掉,然后繼續(xù)向上找父節(jié)點(diǎn) div,匹配成功,然后將樣式設(shè)置到結(jié)點(diǎn)上。

我們通過(guò)上邊的動(dòng)畫(huà),可以知道為什么構(gòu)建 CSSOM 樹(shù)的時(shí)候非常耗時(shí)了,我們?cè)趯?xiě)代碼的時(shí)候可以做出優(yōu)化,所以應(yīng)該避免書(shū)寫(xiě)過(guò)于具體的 CSS 選擇器,少一些添加無(wú)意義的 HTML 標(biāo)簽,有利于提高習(xí)頁(yè)面的性能。

5.3 構(gòu)建渲染樹(shù)

我們分別將上邊生成的 DOM 和 CSSOM 樹(shù)進(jìn)行合并,生成我們的渲染樹(shù)。但是在合并的時(shí)候,并不是兩者簡(jiǎn)單的進(jìn)行結(jié)合,因?yàn)橛行┙Y(jié)點(diǎn)我們并不需要顯示,還記得有一個(gè) display:none 屬性嗎?如果某結(jié)點(diǎn)的樣式有這個(gè)屬性,就不會(huì)出現(xiàn)在渲染樹(shù)中。

5.4合成、繪制

瀏覽器在生成渲染樹(shù)的時(shí)候,就會(huì)根據(jù)渲染樹(shù)進(jìn)行布局,調(diào)用 GPU 進(jìn)行繪制,然后合成圖層,最后顯示在屏幕上。

小結(jié)

通過(guò)上邊的對(duì)瀏覽器工作原理的介紹,相信你對(duì)瀏覽器有了新的認(rèn)識(shí)和簡(jiǎn)介,但是只看上邊的知識(shí)還完全不能深入到底層,如果還想要進(jìn)行深入的對(duì)瀏覽器的工作原理進(jìn)行研究,可以英文文檔《How Browsers Work》,已經(jīng)有人把它翻譯成了中文,但是我自己又翻譯了一遍。

第一,提高自己閱讀英文文檔的能力;

第二,從中學(xué)會(huì)提取關(guān)鍵的內(nèi)容。

雖然翻譯過(guò)程中遇到很多問(wèn)題,但是相信你翻譯完之后,對(duì)你又有新的收獲和認(rèn)識(shí),更重要的是你的能力又比別人提升了 —— 更何況我這個(gè)英語(yǔ)四級(jí)沒(méi)過(guò)的人都堅(jiān)持翻譯下來(lái)了呢!

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 路由器
    +關(guān)注

    關(guān)注

    22

    文章

    3696

    瀏覽量

    113432
  • DNS
    DNS
    +關(guān)注

    關(guān)注

    0

    文章

    215

    瀏覽量

    19771
  • 瀏覽器
    +關(guān)注

    關(guān)注

    1

    文章

    1009

    瀏覽量

    35231
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    跨域問(wèn)題是由瀏覽器的同源策略造成的

    瀏覽器
    jf_62215197
    發(fā)布于 :2024年08月27日 07:51:42

    不只是前端,后端、產(chǎn)品和測(cè)試也需要了解的瀏覽器知識(shí)

    、我們?yōu)槭裁匆私?b class='flag-5'>瀏覽器? 1. 對(duì)于前端開(kāi)發(fā)者 1.瀏覽器是用戶體驗(yàn)的第線。我們需要了解瀏覽器的工作原理,才能有效地設(shè)計(jì)和實(shí)現(xiàn)用戶界面
    的頭像 發(fā)表于 07-01 18:03 ?413次閱讀
    不只是前端,后端、產(chǎn)品和測(cè)試也需要了解的<b class='flag-5'>瀏覽器</b>知識(shí)

    Opera瀏覽器引領(lǐng)潮流,全球首接端側(cè)AI大模型

    昆侖萬(wàn)維旗下海外平臺(tái)Opera宣布,其旗艦瀏覽器Opera One和游戲瀏覽器Opera GX將正式接入端側(cè)AI大模型,成為全球首個(gè)實(shí)現(xiàn)這突破的主流瀏覽器。
    的頭像 發(fā)表于 06-03 09:18 ?660次閱讀

    蘋(píng)果新規(guī)實(shí)施后,瀏覽器公司不滿意

     首先,準(zhǔn)入門(mén)檻頗高。盡管蘋(píng)果官方允許非Safari 瀏覽器呈現(xiàn),但需滿足在過(guò)去年中,在所有 27 個(gè)歐盟成員國(guó)的下載次數(shù)超過(guò) 5000 。此外,蘋(píng)果每年僅更新一次
    的頭像 發(fā)表于 04-13 10:25 ?1148次閱讀

    Edge瀏覽器關(guān)閉Microsoft Rewards擴(kuò)展原因揭曉

    據(jù)報(bào)道,近期德國(guó)等地的Microsoft Edge瀏覽器用戶發(fā)現(xiàn),安裝或啟動(dòng)Microsoft Rewards擴(kuò)展后,會(huì)出現(xiàn)“右上角擴(kuò)展被Edge瀏覽器禁用以保障您的瀏覽器安全”的提醒窗口。
    的頭像 發(fā)表于 04-10 09:55 ?706次閱讀

    鴻蒙開(kāi)發(fā)實(shí)戰(zhàn):網(wǎng)絡(luò)請(qǐng)求庫(kù)【axios】

    [Axios]?,是個(gè)基于 promise 的網(wǎng)絡(luò)請(qǐng)求庫(kù),可以運(yùn)行 node.js 和瀏覽器中。本庫(kù)基于[Axios]原庫(kù)v1.3.4版本進(jìn)行適配,使其可以運(yùn)行在 OpenHarmo
    的頭像 發(fā)表于 03-25 16:47 ?3607次閱讀
    鴻蒙開(kāi)發(fā)實(shí)戰(zhàn):<b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>請(qǐng)求</b>庫(kù)【axios】

    請(qǐng)問(wèn)Spring Boot是如何快速過(guò)濾出一次請(qǐng)求所有日志的?

    在現(xiàn)網(wǎng)出現(xiàn)故障時(shí),我們經(jīng)常需要獲取一次請(qǐng)求流程里的所有日志進(jìn)行定位 。如果請(qǐng)求只在個(gè)線程里處理,則我們可以通過(guò)線程ID來(lái)過(guò)濾 日志 ,但如果請(qǐng)求
    的頭像 發(fā)表于 01-18 10:18 ?330次閱讀

    js腳本怎么在瀏覽器中運(yùn)行

    瀏覽器中運(yùn)行JavaScript腳本是種常見(jiàn)的方式,因?yàn)镴avaScript是種在Web瀏覽器中執(zhí)行的腳本語(yǔ)言。下面是個(gè)詳細(xì)的,最少
    的頭像 發(fā)表于 11-27 16:46 ?2680次閱讀

    js文件可以直接瀏覽器運(yùn)行嗎

    JS文件可以直接在瀏覽器中運(yùn)行。JavaScript(簡(jiǎn)稱(chēng)JS)是種廣泛用于瀏覽器端編程的腳本語(yǔ)言。作為種解釋性語(yǔ)言,JS不需要編譯,而是由瀏覽
    的頭像 發(fā)表于 11-27 16:45 ?3781次閱讀

    瀏覽器怎么打開(kāi)javascript

    瀏覽器種用于瀏覽和訪問(wèn)互聯(lián)網(wǎng)頁(yè)面的應(yīng)用程序,而JavaScript是種常用的網(wǎng)頁(yè)編程語(yǔ)言,用于給網(wǎng)頁(yè)添加交互和動(dòng)態(tài)效果。本文將詳細(xì)探討如何在
    的頭像 發(fā)表于 11-26 11:25 ?2383次閱讀

    瀏覽器需要支持javascript怎么解決

    JavaScript是種流行的腳本語(yǔ)言,用于對(duì)網(wǎng)頁(yè)進(jìn)行動(dòng)態(tài)交互和功能增強(qiáng)。幾乎所有現(xiàn)代瀏覽器都支持JavaScript,但在某些情況下,用戶可能需要采取措施來(lái)確保瀏覽器支持JavaScript
    的頭像 發(fā)表于 11-26 11:23 ?4759次閱讀

    瀏覽器支持javascript怎么設(shè)置

    瀏覽器是我們上網(wǎng)沖浪的工具,而JavaScript是種廣泛使用的腳本語(yǔ)言,可以在網(wǎng)頁(yè)中添加交互性和動(dòng)態(tài)性。因此,確保瀏覽器正確支持JavaScript是非常重要的。 首先,我們需要理解什么是
    的頭像 發(fā)表于 11-26 11:22 ?1361次閱讀

    瀏覽器javascript被禁用怎么解開(kāi)

    JavaScript是種前端開(kāi)發(fā)語(yǔ)言,通過(guò)運(yùn)行在瀏覽器中的腳本來(lái)給網(wǎng)頁(yè)增加動(dòng)態(tài)交互和功能性。然而,有時(shí)候我們可能會(huì)遇到瀏覽器禁用JavaScript的情況,這會(huì)導(dǎo)致某些網(wǎng)頁(yè)無(wú)法正常運(yùn)行或功能受限
    的頭像 發(fā)表于 11-26 11:21 ?1.9w次閱讀

    ie瀏覽器限制運(yùn)行腳本

    IE瀏覽器限制運(yùn)行腳本是指在Internet Explorer瀏覽器中,存在些限制和安全策略,以保護(hù)用戶的電腦免受惡意腳本的攻擊。這些限制有助于防止在瀏覽器中執(zhí)行惡意代碼,保護(hù)用戶的
    的頭像 發(fā)表于 11-26 11:19 ?1408次閱讀

    python控制已經(jīng)打開(kāi)的瀏覽器

    Python是種廣泛使用的編程語(yǔ)言,它具有強(qiáng)大的功能和豐富的庫(kù)。其中個(gè)功能就是控制已經(jīng)打開(kāi)的瀏覽器。這篇文章將詳細(xì)介紹如何使用Python控制已經(jīng)打開(kāi)的瀏覽器,并提供
    的頭像 發(fā)表于 11-22 14:29 ?3147次閱讀