《HTTP權威指南》– 8.網關、機器人

網關

網關(gateway): 資源和應用程序之間的粘合劑。應用程序能夠(經過HTTP或其它已定義的接口)請求網關來處理某條請求,網關能夠提供一條響應。網關能夠向數據庫發送查詢語句,或者生成動態的內容,像一扇門同樣,進去一個請求,出來一個響應。php

 

嚴格的來講,代理鏈接的是兩個或多個使用一樣協議的程序,而網關鏈接的是鏈接兩個或多個不一樣協議的程序網關負責的是協議的轉換數據庫

 

客戶端和服務器端網關:

  • Web網關在一側使用HTTP協議,在另外一側使用另外一種協議;能夠用一個斜槓來分隔客戶端和服務器端協議,並以此對網關進行描述;
  • <客戶端協議> / <服務器端協議>
  • 客戶端網關:(client – side gateway)經過其它協議與客戶端對話,經過HTTP與服務器通訊;
  • 服務器端網關 (server – side gateway) 經過HTTP與客戶端對話,經過其它協議與服務器通訊;

通用網關接口

通用網關接口(common gateway interface CGI): CGI是一個標準接口集,Web服務器能夠用它來裝載程序以響應。對特定URL的HTTP請求,並收集程序的輸出數據,將其放在HTTP響應中回送。api

隧道:

Web隧道 容許用戶經過HTTP鏈接發送非HTTP流量,這樣就能夠在HTTP附帶其它協議數據,也就是說,能夠在HTTP鏈接中嵌入非HTTP流量,非HTTP流量就能夠穿過只容許Web流量經過的防火牆了。服務器

 

Web機器人

Web機器人 是可以在無需人類干預的狀況下自動進行一系列 Web事物處理的軟件程序。不少機器人會從一個Web站點逛到另外一個Web站點,獲取內容,跟蹤超連接,並對它們找到的數據進行處理。若是一個Web站點有 robots.txt文件,那麼在訪問這個Web站點上的任意URL以前,機器人都必須去獲取它並對其進行處理。由主機名和端口號定義的整個Web站點僅有一個 robots.txt資源。若是站點是虛擬主機,每一個虛擬的docroot均可以有一個 robots.txt文件app

獲取robots.txt

機器人會用HTTP的GET方法來獲取robots.txt資源,就像獲取Web服務器上全部其餘資源同樣,機器人應該在 From首部 和 User-Agent首部 中傳輸標識信息,以幫助站點管理員對機器人的訪問進行跟蹤。ide

# 例子:
GET / robots.txt HTTP / 1.0
HOST:www.example.com
User-Agent:Slurp / 2.0
Date:Web Oct 3 23:30:EST

響應碼和狀態碼:

機器人會根據對robots.txt檢索結果採起不一樣方案。post

  • 2xx:機器人對內容進行解析,並使用排斥規則從那個站點上獲取內容;
  • 404:(沒找到文件)機器人認爲服務器沒有任何排斥規則,對次站點的訪問不受robots.txt限制;
  • 401 / 403:機器人認爲對此站點訪問徹底受限;
  • 503:機器人會推遲對此站點的訪問,直到能夠獲取資源爲止;
  • 3xx:若是服務器相應說明是重定向,機器人就應該跟着重定向,直到找到資源爲止;

robots.txt文件格式:

文件中有三種類型行:空行、註釋行和規則行。spa

  • User - Agent:Slurp 容許機器人Slurp訪問;
  • User - Agent:Webcrawler 容許機器人Webcrawler訪問;
  • DisAllow: / private 訪問除了private子目錄;
  • DisAllow: 阻止其它機器人訪問該站點任何內容
#
# 例子:robots.txt for Discuz! X3
#
User-agent: *
Disallow: /api/
Disallow: /data/
Disallow: /source/
Disallow: /install/
Disallow: /template/
Disallow: /config/
Disallow: /uc_client/
Disallow: /uc_server/
Disallow: /static/
Disallow: /admin.php
Disallow: /search.php
Disallow: /member.php
Disallow: /api.php
Disallow: /misc.php
Disallow: /connect.php
Disallow: /forum.php?mod=redirect*
Disallow: /forum.php?mod=post*
Disallow: /home.php?mod=spacecp*
Disallow: /userapp.php?mod=app&*
Disallow: /*?mod=misc*
Disallow: /*?mod=attachment*
Disallow: /*mobile=yes*

機器人的META標籤:

NOINDEX:告訴機器人不要對頁面的內容進行處理;代理

<META NAME = "ROBOTS" CONTENT = "NOINDEX">

NOFOLLOW:告訴機器人不要爬行這個頁面的任務外鏈;code

<META NAME = "ROBOTS" COMEN = "NOFOLLOW">
相關文章
相關標籤/搜索