一起學python爬蟲第二天

2021-10-12 13:51:52 字數 3639 閱讀 4729

今天給大家分享一些http和https,首先請大家看兩幅圖:

這兩張的協議名不一樣。

http協議(hypertext transferprotocol,超文字傳輸協議):就是伺服器和客戶端進行資料互動的一種形象。

比如:(智取威虎山片段,黑話就是http)

土匪:蘑bai菇,你du哪路?什麼價?(什麼人?到**zhi去?)

楊子榮:哈!想啥來啥,想**來了媽媽,想娘家的人,孩子他舅舅來了。(找同行)

楊子榮:拜見三爺!

土匪:天王蓋地虎!(你好大的膽!敢來氣你的祖宗?)

楊子榮:寶塔鎮河妖!(要是那樣,叫我從山上摔死,掉河裡淹死。)

土匪:野雞悶頭鑽,哪能上天王山!(你不是正牌的。)

楊子榮:地上有的是公尺,喂呀,有根底!(老子是正牌的,老牌的。)

土匪:拜見過阿媽啦?(你從小拜誰為師?)

楊子榮:他房上沒瓦,非否非,否非否!(不到正堂不能說。)

土匪:嘛哈嘛哈?(以前獨幹嗎?)

楊子榮:正晌午說話,誰還沒有家?(許大馬棒山上。)

土匪:好叭噠!(zhuan行,是把老手)

楊子榮:天下大耷拉!(不吹牛,闖過大隊頭。)

座山雕:臉紅什麼?

楊子榮:精神煥發!

座山雕:怎麼又黃了?

楊子榮:防冷,塗的蠟!

座山雕:曬噠曬噠。(誰指點你來的?)

楊子榮:一座玲瓏塔,面向青寨背靠沙!(是個道人。)

https(hypertext transfer protocol over secure socket layer):http的安全版

我們常見的**大多都是用http開頭的。

2、https協議:是具有安全性的ssl加密傳輸協議,為瀏覽器和伺服器之間的通訊加密,確保資料傳輸的安全。

什麼是ssl?

ssl(secure sockets layer 安全套接層)主要用於web的安全傳輸協議,在傳輸層對網路鏈結進行加密,保障在internet上資料傳輸的安全。

二、連線方式不同

1、http協議:http的連線很簡單,是無狀態的。

2、https協議:是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議。

三、埠不同

1、http協議:使用的埠是80。

2、https協議:使用的埠是443.

四、證書申請方式不同

1、http協議:免費申請。

2、https協議:需要到ca申請證書,一般免費證書很少,需要交費。

五、速度不同

http 頁面響應速度比 https 快,主要是因為 http 使用 tcp 三次握手建立連線,客戶端和伺服器需要交換 3 個包,而 https除了 tcp 的三個包,還要加上 ssl 握手需要的 9 個包,所以一共是 12 個包。

1、當瀏覽器輸入乙個url(統一定位符,就是我們的**),先解析url是否合法

2、瀏覽器檢查是否存在快取(就是看看以前有沒有訪問過)

3、發起http請求前,需要進行網域名稱解析(dns解析),獲取對應的ip位址

4、發起tcp連線,經過三次握手

5、握手成功,瀏覽器向伺服器傳送http請求,傳送請求資料報

6、伺服器收到請求後,將資料返回給瀏覽器

7、瀏覽器收到返回的資料,解析資料,

8、瀏覽器再傳送請求獲取html頁面的內容

第一次握手:建立連線,客戶端傳送syn包到伺服器,並進入syn_send狀態,等待伺服器確認。syn:同步序列編號

第二次握手:伺服器收到syn包,必須確認客戶端的syn,同時自己也傳送乙個syn包(ack=x+1),此時伺服器進入syn_rcvd狀態。

第三次握手:客戶端收到伺服器的ack=x+1,向伺服器發確認包ack=y+1,此包傳送完畢,客戶端和伺服器進入established狀態,完成三次握手。

比如我們打**說一件事:

get是從伺服器上獲取資料

post是向伺服器傳送資料

1、get請求引數通過url傳遞,post請求的引數放在請求體中

2、get請求比post請求更不安全,因為引數暴露在url中,所以不能用來傳遞敏感資訊

3、get請求在url中傳遞的引數是有長度限制的,post沒有

4、get請求引數會完整的保留在歷史記錄中,post請求不會

5、get請求進行url編碼(百分號編碼),post請求支援多種編碼方式

我們都知道 https 能夠加密資訊,以免敏感資訊被第三方獲取,所以很多銀行**或國家**等等安全級別較高的服務都會採用 https 協議。

1、客戶端發起 https 請求

這個沒什麼好說的,就是使用者在瀏覽器裡輸入乙個 https **,然後連線到 server 的 443 埠。

2、服務端的配置

採用 https 協議的伺服器必須要有一套數字證書,可以自己製作,也可以向組織申請,區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl 就是個不錯的選擇,有 1 年的免費服務)。

這套證書其實就是一對公鑰和私鑰,如果對公鑰和私鑰不太理解,可以想象成一把鑰匙和乙個鎖頭,只是全世界只有你乙個人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個鎖把重要的東西鎖起來,然後發給你,因為只有你乙個人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西。

3、傳送證書

這個證書其實就是公鑰,只是包含了很多資訊,如證書的頒發機構,過期時間等等。

4、客戶端解析證書

這部分工作是有客戶端的tls來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出乙個警告框,提示證書存在問題。

如果證書沒有問題,那麼就生成乙個隨機值,然後用證書對該隨機值進行加密,就好像上面說的,把隨機值用鎖頭鎖起來,這樣除非有鑰匙,不然看不到被鎖住的內容。

5、傳送加密資訊

這部分傳送的是用證書加密後的隨機值,目的就是讓服務端得到這個隨機值,以後客戶端和服務端的通訊就可以通過這個隨機值來進行加密解密了。

6、服務端解密資訊

服務端用私鑰解密後,得到了客戶端傳過來的隨機值(私鑰),然後把內容通過該值進行對稱加密,所謂對稱加密就是,將資訊和私鑰通過某種演算法混合在一起,這樣除非知道私鑰,不然無法獲取內容,而正好客戶端和服務端都知道這個私鑰,所以只要加密演算法夠彪悍,私鑰夠複雜,資料就夠安全。

7、傳輸加密後的資訊

這部分資訊是服務段用私鑰加密後的資訊,可以在客戶端被還原。

8、客戶端解密資訊

客戶端用之前生成的私鑰解密服務段傳過來的資訊,於是獲取了解密後的內容,整個過程第三方即使監聽到了資料,也束手無策。

今天就整理到這了,下課!!! 一起努力呀!衝呀!

學python爬蟲第二天

墨跡少女,隨心學習,啊,好慢!import requests 定義請求的url url 定義請求頭 headers 定義輸入變數 input input post傳送的資料 data 傳送請求 res requests.post url url,headers headers,data data 接...

python爬蟲第二天

時間字串轉換 contents獲取內容 strftime轉化時間格式 內文的提取 實參位置用空格分隔 加一級的標籤 import requests import json jd json.loads comments.text.strip 需剔除部分 抓取內文資訊方法寫成函式 commenturl ...

Python爬蟲第二天

python爬蟲第二天 超時設定 有時候訪問網頁時長時間未響應,系統就會判斷網頁超時,無法開啟網頁。如果需要自己設定超時時間則 通過urlopen 開啟網頁時使用timeout欄位設定 import urllib.request for i in range 1,100 迴圈99次 try file...