Linux企業級專案實踐之網路爬蟲(30)——通過查閱RFC文件擴充更加複雜的功能
HTTP是一種很簡單的請求、響應式協議,客戶端傳送一個請求、伺服器返回一個響應。HTTP 1.1 版本規範由 RFC2616 定義。瞭解了 HTTP請求、響應訊息在TCP資料流中的格式,很容易使用純 socket 模擬HTTP客戶端、HTTP伺服器傳送接收資料。
RFC文件全是ASCII碼,txt格式,但有其標準格式,使用者可通過官方網站查閱(http://www.rfc-editor.org/),也可下載txt版本並使用閱讀器(RFCReader、UE或寫字板都可以,記事本開啟時格式不規範,有網友還把很多RFC作了翻譯,
RFC是一系列以編號排定的檔案。檔案收集了有關因特網相關資訊,以及UNIX和因特網社群的軟體檔案。目前RFC檔案是由Internet Society(ISOC)所贊助發行。
基本的因特網通訊協定都有在RFC檔案內詳細說明。RFC檔案還在標準內額外加入了許多的論題,例如對於因特網新開發的協定及發展中所有的記錄。因此幾乎所有的因特網標準都收錄在RFC檔案之中。
RFC是Request for Comments的縮寫,是計算機網路工程領域最常用的一個詞,是由IETF(Internet Engineering Task Force,因特網工程任務組)發表的用於描述Internet或Internet連線系統方面的相關方法、行為、研究成果或其它創新成果的一種備忘錄。工程師和電腦科學家們可通過Internet Society以RFC的形式發表自己的看法,作為同行評審或者只是為了傳達新概念、資訊或(偶爾)工程幽默。IETF會接受一些以RFC形式發表的建議作為Internet標準。最初起源於1969年(1969年4月7日,UCLA的Steve Crocker公開發表了RFC 1),現已成為IETF和IAB(Internet Architecture Board)及其它一些主要的公共網路研究社群的正式出版物發行途徑,Jon Postel一直是RFC文件的編輯,而Bob Braden和Joyce Reynolds是主要領導和工作人員。目前為止,RFC文件已釋出了6520篇,由於它不刪除舊的文件,如果新發布的文件與舊文件是關於同一技術時,則會標註清楚由新的文件取代舊文件。可以說,在計算機網路特別是Internet領域,RFC文件具有相當的參考價值。
RFC檔案只有新增,不會有取消或中途停止發行的情形。但是對於同一主題而言,新的RFC檔案可以宣告取代舊的RFC檔案。RFC檔案是純 ASCII文字檔格式,可由電腦程式自動轉檔成其他檔案格式。RFC檔案有封面、目錄及頁首頁尾和頁碼。RFC的章節是數字標示,但數字的小數點後不補零,例如4.9的順序就在4.10前面,但9的前面並不補零。RFC1000這份檔案就是RFC的指南。
如何閱讀RFC文件
一是需要確定它是最新的文件,二是需要注意RFC文件的類別;
所有的RFC文件都要經歷評論和反饋過程,並且在這一段時間內它們會被劃分為不同的類別;
RFC文件一旦被提交,IETF和IAB組織將審查RFC文件,通過後可以成為一項標準;
RFC文件按照它發展與成熟的過程可以分為標準、草案標準、提案標準、實驗性的、資訊性或歷史性的;
RFC文件又可以分為被要求、被推薦、被選擇、受限制使用或不被推薦;
HTTP協議(RFC2616)目錄(Table ofContents)
1. 介紹(Introduction) 6
1.1 目的(Purpose) 6
1.2 術語(Terminology) 6
1.3 概述(OverallOperation) 8
1.4 HTTP and MIME 9
2. 標誌轉換及通用語法(NotationalConventions and Generic Grammar) 9
2.1 補充反饋方式(AugmentedBNF) 9
2.2 基本規則(BasicRules) 10
3. 協議引數(ProtocolParameters) 12
3.1 HTTP版本(HTTP Version) 12
3.2 統一資源標識(UniformResource Identifiers) 13
3.2.1 一般語法(General Syntax) 13
3.2.2 http URL 14
3.3 Date/Time 格式(Date/Time Formats) 15
3.4 字符集(CharacterSets) 16
3.5 內容譯碼(ContentCodings) 16
3.6 介質型別(MediaTypes) 17
3.6.1標準及文字預設(Canonicalizationand Text Defaults) 18
3.6.2 多部分型別(Multipart Types) 18
3.7 產品標識(ProductTokens) 19
4. HTTP 訊息(HTTP Message) 19
4.1 訊息型別(MessageTypes) 19
4.2 訊息標題(MessageHeaders) 20
4.3 普通標題域(GeneralHeader Fields) 20
5. 請求(Request) 21
5.1 請求佇列(Request-Line) 21
5.1.1 方法(Method) 22
5.1.2 請求URI(Request-URI) 22
5.2 請求標題域(RequestHeader Fields) 23
6. 迴應(Response) 23
6.1 狀態行(Status-Line) 24
6.1.1 狀態程式碼和原因分析(Status Codeand Reason Phrase) 24
6.2 迴應標題域(ResponseHeader Fields) 25
7. 實體(Entity) 26
7.1 實體標題域(EntityHeader Fields) 26
7.2 實體主體(EntityBody) 26
7.2.1 型別(Type) 27
7.2.2 長度(Length) 27
8. 方法定義(MethodDefinitions) 27
8.1 GET 28
8.2 HEAD 28
8.3 POST 28
9. 狀態程式碼定義(StatusCode Definitions) 29
9.1 訊息1xx(Informational1xx) 29
9.2 成功2xx(Successful2xx) 29
9.3 重定向(Redirection3xx) 30
9.4 客戶端錯誤(ClientError )4xx 31
9.5 伺服器錯誤(ServerError )5xx 32
10. 標題域定義(HeaderField Definitions) 33
10.1 允許(Allow) 33
10.2 授權(Authorization) 34
10.3 內容編碼(Content-Encoding) 34
10.4 內容長度(Content-Length) 34
10.5 內容型別(Content-Type) 35
10.6 日期(Date) 35
10.7 過期(Expires) 36
10.8 來自(From) 37
10.9 從何時更改(If-Modified-Since) 37
10.10 最近更改(Last-Modified) 38
10.11 位置(Location) 38
10.12 註解(Pragma) 39
10.13 提交方(Referer) 39
10.14 伺服器(Server) 40
10.15 使用者代理(User-Agent) 40
10.16 WWW-授權(WWW-Authenticate) 40
11. 訪問鑑別(AccessAuthentication) 41
11.1 基本授權方案(Basic Authentication Scheme) 42
12. 安全考慮(SecurityConsiderations) 43
12.1 客戶授權(Authentication of Clients) 43
12.2 安全方法(Safe Methods) 43
12.3 伺服器日誌資訊的弊端(Abuse of Server Log Information) 43
12.4 敏感資訊傳輸(Transfer of Sensitive Information) 44
12.5 基於檔案及路徑名的攻擊(Attacks Based On File and Path Names) 44
13. 感謝(Acknowledgments) 45
14. 參考書目(References) 45
15. 作者地址(Authors'Addresses) 47
附錄(Appendices) 48
A. Internet介質型別訊息/http(Internet Media Type message/http) 48
B. 容錯應用(TolerantApplications) 48
C. 與MIME的關係(Relationshipto MIME) 49
C.1 轉換為規範形式(Conversionto Canonical Form) 49
C.2 日期格式轉換(Conversionof Date Formats) 49
C.3 內容編碼介紹(Introductionof Content-Encoding) 50
C.4 無內容傳輸編碼(NoContent-Transfer-Encoding) 50
C.5 多個主體的HTTP標題域(HTTPHeader Fields in Multipart Body-Parts)
50
D. 附加特性(AdditionalFeatures) 50
D.1 附加請求方法(AdditionalRequest Methods) 51
D.2 附加標題域定義(AdditionalHeader Field Definitions) 51
相關文章
- Linux企業級專案實踐之網路爬蟲(21)——擴充套件為多工爬蟲Linux爬蟲套件
- Linux企業級專案實踐之網路爬蟲(24)——定製規則擴充套件為垂直爬蟲Linux爬蟲套件
- Linux企業級專案實踐之網路爬蟲(27)——多路IO複用Linux爬蟲
- Linux企業級專案實踐之網路爬蟲(9)——通過URL抓取網頁內容Linux爬蟲網頁
- Linux企業級專案實踐之網路爬蟲(28)——爬蟲socket處理Linux爬蟲
- Linux企業級專案實踐之網路爬蟲(7)——DNS解析Linux爬蟲DNS
- Linux企業級專案實踐之網路爬蟲(19)——epoll介面Linux爬蟲
- Linux企業級專案實踐之網路爬蟲(20)——擴充套件成為規則外掛模式Linux爬蟲套件模式
- Linux企業級專案實踐之網路爬蟲(4)——主程式流程Linux爬蟲
- Linux企業級專案實踐之網路爬蟲(8)——認識URLLinux爬蟲
- Linux企業級專案實踐之網路爬蟲(25)——管理原始碼之SVNLinux爬蟲原始碼
- Linux企業級專案實踐之網路爬蟲(5)——處理配置檔案Linux爬蟲
- Linux企業級專案實踐之網路爬蟲(17)——儲存頁面Linux爬蟲
- Linux企業級專案實踐之網路爬蟲(18)——佇列處理Linux爬蟲佇列
- Linux企業級專案實踐之網路爬蟲(26)——執行緒池Linux爬蟲執行緒
- Linux企業級專案實踐之網路爬蟲(29)——遵守robots.txtLinux爬蟲
- Linux企業級專案實踐之網路爬蟲(13)——處理user-agentLinux爬蟲
- Linux企業級專案實踐之網路爬蟲(10)——處理HTTP狀態碼Linux爬蟲HTTP
- Linux企業級專案實踐之網路爬蟲(11)——處理http請求頭Linux爬蟲HTTP
- Linux企業級專案實踐之網路爬蟲(12)——處理HTTP應答頭Linux爬蟲HTTP
- Linux企業級專案實踐之網路爬蟲(22)——編寫爬蟲系統服務控制指令碼Linux爬蟲指令碼
- Linux企業級專案實踐之網路爬蟲(23)——系統測試:找出系統中的bugLinux爬蟲
- Linux企業級專案實踐之網路爬蟲(6)——將程式設計成為守護程式Linux爬蟲程式設計
- Linux企業級專案實踐之網路爬蟲(15)——區分文字檔案和二進位制檔案Linux爬蟲
- Linux企業級專案實踐之網路爬蟲(14)——使用正規表示式抽取HTML正文和URLLinux爬蟲HTML
- Linux企業級專案實踐之網路爬蟲(16)——使用base64傳輸二進位制資料Linux爬蟲
- 網路爬蟲專案爬蟲
- 企業資料爬蟲專案爬蟲
- 最新《30小時搞定Python網路爬蟲專案實戰》Python爬蟲
- 網路爬蟲專案蒐集爬蟲
- 企業資料爬蟲專案(二)爬蟲
- Python網路爬蟲實戰專案大全 32個Python爬蟲專案demoPython爬蟲
- 專案--python網路爬蟲Python爬蟲
- 網路爬蟲(python專案)爬蟲Python
- Python網路爬蟲實戰小專案Python爬蟲
- Python網路爬蟲實戰專案大全!Python爬蟲
- Java 爬蟲專案實戰之爬蟲簡介Java爬蟲
- 家居企業如何通過網際網路實現營銷升級?