瞭解協議

爬蟲工做流程
一、請求數據
協議:http https websocket
注意請求過程當中的 headers(請求頭)中User-Agent referer cookies
請求庫:urllib requests
工具:fiddler charles mysql

二、解析數據
正則表達式
bs4
lxml-xpathweb

三、數據持久化
文件:json txt
數據庫:mysql mongodb
可視化正則表達式

四、反爬
cookies應用
ip代理
驗證碼
js加密
selenium驅動chrome/phantomjs pyv8庫算法

五、爬蟲框架
scrapy
pyspidersql


1、協議
http 單向通訊
特色
一、支持客戶端/服務端模式 即 請求/響應模式
二、請求方法:get(參數在url) post
url:統一資源定位符 範式:http://host:port/path?key1=value1&key2=value2 默認端口 80
三、可以傳遞任意類型的數據對象,由content-type標記
四、無狀態 ---> cookie session保存會話,識別身份mongodb

http請求/響應過程
一、客戶端鏈接客戶端 創建TCP套接字鏈接
二、客戶端發送http請求
三、服務端接受請求,返回響應
四、服務端主動釋放套接字,關閉tcp鏈接chrome

http1.0 一次request 一次 response http1.1 屢次request 屢次response 數據庫

返回狀態碼
1xx:請求已接受,繼續處理
2xx:成功
3xx:重定向
4xx:客戶端錯誤 請求語法有問題
5xx:服務器錯誤json

常見的狀態碼
200 OK
204 No Content 表示請求已成功處理,可是沒有內容返回
301 Moved Permanently 永久重定向,表示請求的資源已經永久的搬到了其餘位置
303 See Other 表示請求資源存在另外一個URI,應使用GET定向獲取請求資源
304 Not Modified 意味着資源沒有被修改由於請求頭指定的版本跟本地保存的版本並未修改或沒有匹配。這說明沒有必要從新傳輸資源,由於客戶端仍然有一個之前下載的副本。
305 被請求的資源必須經過指定的代理才能被訪問。
308:使用原有的地址請求方式來經過新地址獲取資源。
400 Bad Request 表示請求報文存在語法錯誤或參數錯誤,服務器不理解
401 Unauthorized 表示發送的請求須要有HTTP認證信息或者是認證失敗了
403 Forbidden 表示對請求資源的訪問被服務器拒絕了
404 Not Found 表示服務器找不到你請求的資源 也有可能服務器就是不想給你而後騙你找不到
500 Internal Server Error 表示服務器執行請求的時候出錯了
503 Service Unavailable 表示服務器超負載或正停機維護,沒法處理請求 服務器

https
默認端口 443
加密算法
一、對稱加密 有一個密鑰進行加密和解密 DES AES
客戶端將加密數據和密鑰發給服務端,服務端解密數據--->不可靠
二、非對稱加密 有一個公鑰和私鑰 公鑰加密 私鑰解密 RSA ECC 通常用於少許數據加密(加密耗時較久)
服務端生成公鑰和私鑰---->客戶端請求公鑰--->客戶端加密數據併發送給服務端--->服務端用私鑰解密
相對可靠,注意中間人攻擊
三、hash算法 MD5 加鹽
把數據映射成固定長度的哈希值,不可逆(不能由哈希值算出原始數據)
能夠用來檢驗數據完整性(數據修改後會生成新的哈希值)、數據壓縮(哈希值長度固定)
https採用證書 避免中間人攻擊 服務器把公鑰放在證書裏面發給客戶端,中間人沒有證書

websocket 雙向通訊 全雙工持久化協議,第一次請求仍然用http協議,只是客戶端會帶上將請求升級成websocket的參數服務端收到客戶端請求後,升級成websocket協議,陸續將數據發給客戶端(服務端會保持鏈接),後面有新數據生成,無需客戶端再次請求,服務端會主動把數據發給客戶端,例如鬥魚的彈幕

相關文章
相關標籤/搜索