python 網絡爬蟲概念與HTTP(s)協議

1. 爬蟲相關概念

1.1 定義

  • 爬蟲就是經過編寫程序模擬瀏覽器上網,而後讓其去互聯網上抓取數據的過程

1.2 主流語言實現爬蟲優劣

  • php:能夠實現爬蟲。可是php在實現爬蟲中支持多線程和多進程方面作的很差
  • java:能夠實現爬蟲。java能夠很是好的處理和實現爬蟲,是惟一能夠與python並駕齊驅且是python的頭號勁敵。可是java實現爬蟲代碼較爲臃腫,重構成本較大。
  • c、c++:能夠實現爬蟲,須要編寫底層流程,並不 明智
  • python:能夠實現爬蟲。python實現和處理爬蟲語法簡單,代碼優美,支持的模塊繁多,學習成本低,具備很是強大的框架(scrapy等

1.3 爬蟲分類

1.通用爬蟲:通用爬蟲是搜索引擎(Baidu、Google、Yahoo等)「抓取系統」的重要組成部分。 主要目的是將互聯網上的網頁下載到本地,造成一個互聯網內容的鏡像備份。 2.聚焦爬蟲:聚焦爬蟲是根據指定的需求抓取網絡上指定的數據。例如:獲取豆瓣上電影的名稱和影評,而不是獲取整張頁面中全部的數據值。 注:搜索引擎如何抓取互聯網上的網站數據? a)門戶網站主動向搜索引擎公司提供其網站的url b)搜索引擎公司與DNS服務商合做,獲取網站的url c)門戶網站主動掛靠在一些知名網站的友情連接中 

1.4 robots.txt協議

  • 口頭約束,無相關技術支持

2. http與https協議

2.1 HTTP

  • HTTP協議就是服務器(Server)和客戶端(Client)之間進行數據交互(相互傳輸數據)的一種形式。咱們能夠將Server和Client進行擬人化
注意點: 1、 HTTP容許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記 2、 HTTP是無鏈接:無鏈接的含義是限制每次鏈接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開鏈接。採用這種方式能夠節省傳輸時間。 3、 HTTP是媒體獨立的 4、 HTTP是無狀態:HTTP協議是無狀態協議 
  • 請求頭信息:
accept:瀏覽器經過這個頭告訴服務器,它所支持的數據類型 Accept-Charset: 瀏覽器經過這個頭告訴服務器,它支持哪一種字符集 Accept-Encoding:瀏覽器經過這個頭告訴服務器,支持的壓縮格式 Accept-Language:瀏覽器經過這個頭告訴服務器,它的語言環境 Host:瀏覽器經過這個頭告訴服務器,想訪問哪臺主機 If-Modified-Since: 瀏覽器經過這個頭告訴服務器,緩存數據的時間 Referer:瀏覽器經過這個頭告訴服務器,客戶機是哪一個頁面來的 防盜鏈 Connection:瀏覽器經過這個頭告訴服務器,請求完後是斷開連接仍是何持連接 X-Requested-With: XMLHttpRequest 表明經過ajax方式進行訪問 User-Agent:請求載體的身份標識 
  • 響應消息
Location: 服務器經過這個頭,來告訴瀏覽器跳到哪裏 Server:服務器經過這個頭,告訴瀏覽器服務器的型號 Content-Encoding:服務器經過這個頭,告訴瀏覽器,數據的壓縮格式 Content-Length: 服務器經過這個頭,告訴瀏覽器回送數據的長度 Content-Language: 服務器經過這個頭,告訴瀏覽器語言環境 Content-Type:服務器經過這個頭,告訴瀏覽器回送數據的類型 Refresh:服務器經過這個頭,告訴瀏覽器定時刷新 Content-Disposition: 服務器經過這個頭,告訴瀏覽器如下載方式打數據 Transfer-Encoding:服務器經過這個頭,告訴瀏覽器數據是以分塊方式回送的 Expires: -1 控制瀏覽器不要緩存 Cache-Control: no-cache Pragma: no-cache 

2.2 HTTPS

  • HTTPS (Secure Hypertext Transfer Protocol)安全超文本傳輸協議,HTTPS是在HTTP上創建SSL加密層,並對傳輸數據進行加密,是HTTP協議的安全版。
  • 加密方式:
1、SSL加密技術,客戶端向服務器發送一條信息,首先客戶端會採用已知的算法對信息進行加密,好比MD5或者Base64加密, 接收端對加密的信息進行解密的時候須要用到密鑰,中間會傳遞密鑰,(加密和解密的密鑰是同一個),密鑰在傳輸中間是被加密的。 這種方式看起來安全,可是仍有潛在的危險,一旦被竊聽,或者信息被挾持,就有可能破解密鑰,而破解其中的信息。所以「共享密鑰加密」這種方式存在安全隱患 2、非對稱祕鑰加密技術,服務器首先告訴客戶端按照本身給定的公開密鑰進行加密處理,客戶端按照公開密鑰加密之後, 服務器接受到信息再經過本身的私有密鑰進行解密,這樣作的好處就是解密的鑰匙根本就不會進行傳輸,所以也就避免了被挾持的風險。 就算公開密鑰被竊聽者拿到了,它也很難進行解密,由於解密過程是對離散對數求值,這可不是垂手可得就能作到的事 問題:(1)沒法保證接收端向發送端發出公開祕鑰的時候,發送端確保收到的是預先要發送的,而不會被挾持。只要是發送密鑰,就有可能有被挾持的風險。 (2)效率比較低,它處理起來更爲複雜,通訊過程當中使用就有必定的效率問題而影響通訊速度 3、https的證書機制,服務器的開發者攜帶公開密鑰,向數字證書認證機構提出公開密鑰的申請,數字證書認證機構在認清申請者的身份,審覈經過之後,會對開發者申請的公開密鑰作數字簽名,而後分配這個已簽名的公開密鑰,並將密鑰放在證書裏面,綁定在一塊兒; 服務器將這份數字證書發送給客戶端,由於客戶端也承認證書機構,客戶端能夠經過數字證書中的數字簽名來驗證公鑰的真僞,來確保服務器傳過
相關文章
相關標籤/搜索