Handler處理器 和 自定義Opener
opener是 urllib2.OpenerDirector 的實(shí)例,我們之前一直都在使用的urlopen畏浆,它是一個(gè)特殊的opener(也就是模塊幫我們構(gòu)建好的)税稼。
但是基本的urlopen()方法不支持代理烦秩、cookie等其他的HTTP/HTTPS高級(jí)功能。所以要支持這些功能:
1、使用相關(guān)的Handler處理器來(lái)創(chuàng)建特定功能的處理器對(duì)象;
2、然后通過urllib2.build_opener()方法使用這些處理器對(duì)象,創(chuàng)建自定義opener對(duì)象申窘;
3、使用自定義的opener對(duì)象,調(diào)用open()方法發(fā)送請(qǐng)求。
如果程序里所有的請(qǐng)求都使用自定義的opener,可以使用urllib2.install_opener()將自定義的 opener 對(duì)象 定義為 全局opener猴凹,表示如果之后凡是調(diào)用urlopen夷狰,都將使用這個(gè)opener(根據(jù)自己的需求來(lái)選擇)
簡(jiǎn)單的自定義opener()
import urllib
from urllib import request
# 構(gòu)建一個(gè)HTTPHandler 處理器對(duì)象,支持處理HTTP請(qǐng)求
handler = urllib.request.HTTPHandler() # http
# 構(gòu)建一個(gè)HTTPHandler 處理器對(duì)象郊霎,支持處理HTTPS請(qǐng)求
# handlers = urllib.request.HTTPSHandler() # 處理https的處理器
# 調(diào)用urllib2.build_opener()方法沼头,創(chuàng)建支持處理HTTP請(qǐng)求的opener對(duì)象
opener = urllib.request.build_opener(handler)
# 構(gòu)建 Request請(qǐng)求
req = urllib.request.Request("http://www.baidu.com", headers=headers)
# 調(diào)用自定義opener對(duì)象的open()方法,發(fā)送request請(qǐng)求
response = opener.open(req)
# 獲取服務(wù)器響應(yīng)內(nèi)容
print(response.read())
這種方式發(fā)送請(qǐng)求得到的結(jié)果书劝,和使用urllib2.urlopen()發(fā)送HTTP/HTTPS請(qǐng)求得到的結(jié)果是一樣的进倍。
如果在 HTTPHandler()增加 debuglevel=1參數(shù),還會(huì)將 Debug Log 打開购对,這樣程序在執(zhí)行的時(shí)候猾昆,會(huì)把收包和發(fā)包的報(bào)頭在屏幕上自動(dòng)打印出來(lái),方便調(diào)試骡苞,有時(shí)可以省去抓包的工作
# 僅需要修改的代碼部分:
# 構(gòu)建一個(gè)HTTPHandler 處理器對(duì)象垂蜗,支持處理HTTP請(qǐng)求楷扬,同時(shí)開啟Debug Log,debuglevel 值默認(rèn) 0
http_handler = urllib2.HTTPHandler(debuglevel=1)
# 構(gòu)建一個(gè)HTTPSHandler 處理器對(duì)象贴见,支持處理HTTPS請(qǐng)求烘苹,同時(shí)開啟Debug Log,debuglevel 值默認(rèn) 0
https_handler = urllib2.HTTPSHandler(debuglevel=1)
Cookie
Cookie 是指某些網(wǎng)站服務(wù)器為了辨別用戶身份和進(jìn)行Session跟蹤片部,而儲(chǔ)存在用戶瀏覽器上的文本文件镣衡,Cookie可以保持登錄信息到用戶下次與服務(wù)器的會(huì)話。
Cookie原理
HTTP是無(wú)狀態(tài)的協(xié)議, 為了保持連接狀態(tài), 引入了Cookie機(jī)制 Cookie是http消息頭中的一種屬性档悠,包括:
Cookie名字(Name)
Cookie的值(Value)
Cookie的過期時(shí)間(Expires/Max-Age)
Cookie作用路徑(Path)
Cookie所在域名(Domain)廊鸥,
使用Cookie進(jìn)行安全連接(Secure)。
前兩個(gè)參數(shù)是Cookie應(yīng)用的必要條件站粟,另外黍图,還包括Cookie大小(Size奴烙,不同瀏覽器對(duì)Cookie個(gè)數(shù)及大小限制是有差異的)助被。
Cookie由變量名和值組成,根據(jù) Netscape公司的規(guī)定切诀,Cookie格式如下:
Set-Cookie: NAME=VALUE揩环;Expires=DATE;Path=PATH幅虑;Domain=DOMAIN_NAME丰滑;SECURE
Cookie應(yīng)用
Cookies在爬蟲方面最典型的應(yīng)用是判定注冊(cè)用戶是否已經(jīng)登錄網(wǎng)站,用戶可能會(huì)得到提示倒庵,是否在下一次進(jìn)入此網(wǎng)站時(shí)保留用戶信息以便簡(jiǎn)化登錄手續(xù)褒墨。
cookielib庫(kù) 和 HTTPCookieProcessor處理器
在Python處理Cookie,一般是通過cookielib模塊和 urllib2模塊的HTTPCookieProcessor處理器類一起使用擎宝。
cookielib模塊:主要作用是提供用于存儲(chǔ)cookie的對(duì)象
HTTPCookieProcessor處理器:主要作用是處理這些cookie對(duì)象郁妈,并構(gòu)建handler對(duì)象。
cookielib 庫(kù)
該模塊主要的對(duì)象有CookieJar绍申、FileCookieJar噩咪、MozillaCookieJar、LWPCookieJar极阅。
CookieJar:管理HTTP cookie值胃碾、存儲(chǔ)HTTP請(qǐng)求生成的cookie、向傳出的HTTP請(qǐng)求添加cookie的對(duì)象筋搏。整個(gè)cookie都存儲(chǔ)在內(nèi)存中仆百,對(duì)CookieJar實(shí)例進(jìn)行垃圾回收后cookie也將丟失。
FileCookieJar (filename,delayload=None,policy=None):從CookieJar派生而來(lái)奔脐,用來(lái)創(chuàng)建FileCookieJar實(shí)例儒旬,檢索cookie信息并將cookie存儲(chǔ)到文件中栏账。filename是存儲(chǔ)cookie的文件名。delayload為True時(shí)支持延遲訪問訪問文件栈源,即只有在需要時(shí)才讀取文件或在文件中存儲(chǔ)數(shù)據(jù)挡爵。
MozillaCookieJar (filename,delayload=None,policy=None):從FileCookieJar派生而來(lái),創(chuàng)建與Mozilla瀏覽器 cookies.txt兼容的FileCookieJar實(shí)例甚垦。
LWPCookieJar (filename,delayload=None,policy=None):從FileCookieJar派生而來(lái)茶鹃,創(chuàng)建與libwww-perl標(biāo)準(zhǔn)的 Set-Cookie3 文件格式兼容的FileCookieJar實(shí)例。
其實(shí)大多數(shù)情況下艰亮,我們只用CookieJar()闭翩,如果需要和本地文件交互,就用 MozillaCookjar() 或 LWPCookieJar()
Cookie案例:
1.獲取Cookie
import urllib.request
from http import cookiejar # python3
# import cookiejar # python2
# 創(chuàng)建一個(gè)對(duì)象存儲(chǔ)cookie
cookies = cookiejar.LWPCookieJar()
# cookie處理器, 提取cookie
cookie_handler = urllib.request.HTTPCookieProcessor(cookies)
# 創(chuàng)建打開器, 處理cookie
opener = urllib.request.build_opener(cookie_handler)
# 使用opener打開url
response = opener.open("http://www.baidu.com/")
# 得到cookies
print(cookies)
-
下載cookie
import urllib.request
from http import cookiejar
filename = "baiducookie.txt" # 用于保存cookie
# 管理cookie的對(duì)象
cookies = cookiejar.LWPCookieJar(filename=filename)
# 創(chuàng)建cookie處理器
cookie_handler = urllib.request.HTTPCookieProcessor(cookies)
# 創(chuàng)建打開器
opener = urllib.request.build_opener(cookie_handler)
# 添加UA迄埃,并打開百度疗韵,下載cookie
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
}
req = urllib.request.Request("http://www.baidu.com", headers=headers)
# 打開
response = opener.open(req)
# 保存, 忽略錯(cuò)誤
cookies.save(ignore_discard=True, ignore_expires=True)
-
使用下載的cookie
import urllib.request
from http import cookiejar
filename = "baiducookie.txt"
cookies = cookiejar.LWPCookieJar()
# 使用cookie
cookies.load(filename)
cookie_handler = urllib.request.HTTPCookieProcessor(cookies)
opener = urllib.request.build_opener(cookie_handler)
# 添加UA侄非,并打開百度
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
}
req = urllib.request.Request("http://www.baidu.com", headers=headers)
response = opener.open(req)
示例: cookie登錄qq空間
1蕉汪,用自己的賬號(hào)登錄qq空間,將登錄成功后的cookie拷貝出來(lái)
2逞怨,將拷貝出來(lái)的cookie保存在HTTP頭部信息headers中
3者疤,使用headers發(fā)送請(qǐng)求
QQ空間: https://user.qzone.qq.com/904552498
練習(xí): 登錄人人網(wǎng)
# 人人網(wǎng)登錄接口:
url = "http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2018921035604"
# 參數(shù):
data = {
"email": "18566218481",
"icode": "",
"origURL": "http://www.renren.com/home",
"domain": "renren.com",
"key_id": "1",
"captcha_type": "web_login",
"password": "1260ec8f79d73201e2e7aaca932e88465dffe9f59bd7104a9d7c1bac981dad59",
"rkey": "44fd96c219c593f3c9612360c80310a3",
"f": "http%3A%2F%2Fwww.renren.com%2F548819077%2Fprofile",
}
1, 保存登錄成功后的cookie
2叠赦, 使用保存的cookie進(jìn)行登錄驹马, 登錄后獲取個(gè)人信息
url = "http://www.renren.com/548819077/profile"
HTTP代理神器Fiddler /Charles青花瓷
Fiddler是一款強(qiáng)大Web調(diào)試工具,它能記錄所有客戶端和服務(wù)器的HTTP請(qǐng)求除秀。 Fiddler啟動(dòng)的時(shí)候糯累,默認(rèn)IE的代理設(shè)為了127.0.0.1:8888,而其他瀏覽器是需要手動(dòng)設(shè)置册踩。
請(qǐng)求 (Request) 部分詳解
Headers —— 顯示客戶端發(fā)送到服務(wù)器的 HTTP 請(qǐng)求的 header泳姐,顯示為一個(gè)分級(jí)視圖,包含了 Web 客戶端信息棍好、Cookie仗岸、傳輸狀態(tài)等允耿。
Textview —— 顯示 POST 請(qǐng)求的 body 部分為文本借笙。
WebForms —— 顯示請(qǐng)求的 GET 參數(shù) 和 POST body 內(nèi)容。
HexView —— 用十六進(jìn)制數(shù)據(jù)顯示請(qǐng)求较锡。
Auth —— 顯示響應(yīng) header 中的 Proxy-Authorization(代理身份驗(yàn)證) 和 Authorization(授權(quán)) 信息.
Raw —— 將整個(gè)請(qǐng)求顯示為純文本业稼。
JSON - 顯示JSON格式文件。
XML —— 如果請(qǐng)求的 body 是 XML 格式蚂蕴,就是用分級(jí)的 XML 樹來(lái)顯示它低散。
響應(yīng) (Response) 部分詳解
Transformer —— 顯示響應(yīng)的編碼信息俯邓。
Headers —— 用分級(jí)視圖顯示響應(yīng)的 header。
TextView —— 使用文本顯示相應(yīng)的 body熔号。
ImageVies —— 如果請(qǐng)求是圖片資源稽鞭,顯示響應(yīng)的圖片。
HexView —— 用十六進(jìn)制數(shù)據(jù)顯示響應(yīng)引镊。
WebView —— 響應(yīng)在 Web 瀏覽器中的預(yù)覽效果朦蕴。
Auth —— 顯示響應(yīng) header 中的 Proxy-Authorization(代理身份驗(yàn)證) 和 Authorization(授權(quán)) 信息。
Caching —— 顯示此請(qǐng)求的緩存信息弟头。
Privacy —— 顯示此請(qǐng)求的私密 (P3P) 信息吩抓。
Raw —— 將整個(gè)響應(yīng)顯示為純文本。
JSON - 顯示JSON格式文件赴恨。
XML —— 如果響應(yīng)的 body 是 XML 格式疹娶,就是用分級(jí)的 XML 樹來(lái)顯示它 。
ProxyHandler處理器(代理設(shè)置)
使用代理IP伦连,這是爬蟲/反爬蟲的第二大招雨饺,通常也是最好用的。
很多網(wǎng)站會(huì)檢測(cè)某一段時(shí)間某個(gè)IP的訪問次數(shù)(通過流量統(tǒng)計(jì)除师,系統(tǒng)日志等)沛膳,如果訪問次數(shù)多的不像正常人,它會(huì)禁止這個(gè)IP的訪問汛聚。
所以我們可以設(shè)置一些代理服務(wù)器锹安,每隔一段時(shí)間換一個(gè)代理,就算IP被禁止倚舀,依然可以換個(gè)IP繼續(xù)爬取叹哭。
免費(fèi)的開放代理獲取基本沒有成本,我們可以在一些代理網(wǎng)站上收集這些免費(fèi)代理痕貌,測(cè)試后如果可以用风罩,就把它收集起來(lái)用在爬蟲上面。
免費(fèi)短期代理網(wǎng)站舉例:
西刺免費(fèi)代理IP
快代理免費(fèi)代理
Proxy360代理
全網(wǎng)代理IP
代理IP池:
如果代理IP足夠多舵稠,形成代理池超升,就可以像隨機(jī)獲取User-Agent一樣,隨機(jī)選擇一個(gè)代理去訪問網(wǎng)站哺徊。
import urllib.request
import random
# 假設(shè)此時(shí)有一已經(jīng)格式化好的ip代理地址proxies
# 可訪問西刺代理獲取代理ip:http://www.xicidaili.com/
# ip代理池
iplist = [
"http://183.159.84.198:18118",
"http://183.159.92.206:18118",
"http://119.179.209.43:61234",
"http://183.159.82.181:18118"
]
# ua池(user-agent池 )
UserAngentList=[
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko",
"Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1",
"Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Mobile Safari/537.36"
]
url = 'https://blog.csdn.net/linangfs/article/details/78331419?locationNum=9&fps=1'
for i in range(3):
headers = { "User-Agent": random.choice(UserAngentList)}
proxy = {"http": random.choice(iplist)}
try:
proxy_handler = urllib.request.ProxyHandler(proxy)
opener = urllib.request.build_opener(proxy_handler)
req = urllib.request.Request(url, headers=headers)
response = opener.open(req) # 使用代理
print(response.code)
except:
print('失敗')
else:
print('成功')
使用西刺代理客戶端:
安裝ccproxy代理
設(shè)置禁止外部用戶訪問: 設(shè)置 -> 高級(jí) -> 網(wǎng)絡(luò) -> 禁止局域網(wǎng)外用戶室琢,取消勾選
import urllib.request
import random
# 使用西刺代理
# 無(wú)密碼
proxy = {"http": "http://172.20.10.3:808"}
# 有密碼(需要在 西刺代理軟件中添加賬號(hào)和密碼 )
proxy = {"http": "http://user1:123456@172.20.10.3:808"}
HTTP響應(yīng)狀態(tài)碼參考
1xx:信息
100 Continue
服務(wù)器僅接收到部分請(qǐng)求,但是一旦服務(wù)器并沒有拒絕該請(qǐng)求落追,客戶端應(yīng)該繼續(xù)發(fā)送其余的請(qǐng)求盈滴。
101 Switching Protocols
服務(wù)器轉(zhuǎn)換協(xié)議:服務(wù)器將遵從客戶的請(qǐng)求轉(zhuǎn)換到另外一種協(xié)議。
2xx:成功
200 OK
請(qǐng)求成功(其后是對(duì)GET和POST請(qǐng)求的應(yīng)答文檔)
201 Created
請(qǐng)求被創(chuàng)建完成轿钠,同時(shí)新的資源被創(chuàng)建巢钓。
202 Accepted
供處理的請(qǐng)求已被接受病苗,但是處理未完成。
203 Non-authoritative Information
文檔已經(jīng)正常地返回症汹,但一些應(yīng)答頭可能不正確硫朦,因?yàn)槭褂玫氖俏臋n的拷貝。
204 No Content
沒有新文檔背镇。瀏覽器應(yīng)該繼續(xù)顯示原來(lái)的文檔阵幸。如果用戶定期地刷新頁(yè)面,而Servlet可以確定用戶文檔足夠新芽世,這個(gè)狀態(tài)代碼是很有用的挚赊。
205 Reset Content
沒有新文檔。但瀏覽器應(yīng)該重置它所顯示的內(nèi)容济瓢。用來(lái)強(qiáng)制瀏覽器清除表單輸入內(nèi)容荠割。
206 Partial Content
客戶發(fā)送了一個(gè)帶有Range頭的GET請(qǐng)求,服務(wù)器完成了它旺矾。
3xx:重定向
300 Multiple Choices
多重選擇蔑鹦。鏈接列表。用戶可以選擇某鏈接到達(dá)目的地箕宙。最多允許五個(gè)地址嚎朽。
301 Moved Permanently
所請(qǐng)求的頁(yè)面已經(jīng)轉(zhuǎn)移至新的url。
302 Moved Temporarily
所請(qǐng)求的頁(yè)面已經(jīng)臨時(shí)轉(zhuǎn)移至新的url柬帕。
303 See Other
所請(qǐng)求的頁(yè)面可在別的url下被找到哟忍。
304 Not Modified
未按預(yù)期修改文檔∠萸蓿客戶端有緩沖的文檔并發(fā)出了一個(gè)條件性的請(qǐng)求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)锅很。服務(wù)器告訴客戶,原來(lái)緩沖的文檔還可以繼續(xù)使用凤跑。
305 Use Proxy
客戶請(qǐng)求的文檔應(yīng)該通過Location頭所指明的代理服務(wù)器提取爆安。
306 Unused
此代碼被用于前一版本。目前已不再使用仔引,但是代碼依然被保留扔仓。
307 Temporary Redirect
被請(qǐng)求的頁(yè)面已經(jīng)臨時(shí)移至新的url。
4xx:客戶端錯(cuò)誤
400 Bad Request
服務(wù)器未能理解請(qǐng)求咖耘。
401 Unauthorized
被請(qǐng)求的頁(yè)面需要用戶名和密碼翘簇。
401.1
登錄失敗。
401.2
服務(wù)器配置導(dǎo)致登錄失敗鲤看。
401.3
由于 ACL 對(duì)資源的限制而未獲得授權(quán)缘揪。
401.4
篩選器授權(quán)失敗耍群。
401.5
ISAPI/CGI 應(yīng)用程序授權(quán)失敗义桂。
401.7
訪問被 Web 服務(wù)器上的 URL 授權(quán)策略拒絕找筝。這個(gè)錯(cuò)誤代碼為 IIS 6.0 所專用。
402 Payment Required
此代碼尚無(wú)法使用慷吊。
403 Forbidden
對(duì)被請(qǐng)求頁(yè)面的訪問被禁止袖裕。
403.1
執(zhí)行訪問被禁止。
403.2
讀訪問被禁止溉瓶。
403.3
寫訪問被禁止急鳄。
403.4
要求 SSL。
403.5
要求 SSL 128堰酿。
403.6
IP 地址被拒絕疾宏。
403.7
要求客戶端證書。
403.8
站點(diǎn)訪問被拒絕触创。
403.9
用戶數(shù)過多坎藐。
403.10
配置無(wú)效。
403.11
密碼更改哼绑。
403.12
拒絕訪問映射表岩馍。
403.13
客戶端證書被吊銷。
403.14
拒絕目錄列表抖韩。
403.15
超出客戶端訪問許可蛀恩。
403.16
客戶端證書不受信任或無(wú)效。
403.17
客戶端證書已過期或尚未生效茂浮。
403.18
在當(dāng)前的應(yīng)用程序池中不能執(zhí)行所請(qǐng)求的 URL双谆。這個(gè)錯(cuò)誤代碼為 IIS 6.0 所專用。
403.19
不能為這個(gè)應(yīng)用程序池中的客戶端執(zhí)行 CGI席揽。這個(gè)錯(cuò)誤代碼為 IIS 6.0 所專用佃乘。
403.20
Passport 登錄失敗。這個(gè)錯(cuò)誤代碼為 IIS 6.0 所專用驹尼。
404 Not Found
服務(wù)器無(wú)法找到被請(qǐng)求的頁(yè)面趣避。
404.0
沒有找到文件或目錄。
404.1
無(wú)法在所請(qǐng)求的端口上訪問 Web 站點(diǎn)新翎。
404.2
Web 服務(wù)擴(kuò)展鎖定策略阻止本請(qǐng)求程帕。
404.3
MIME 映射策略阻止本請(qǐng)求。
405 Method Not Allowed
請(qǐng)求中指定的方法不被允許地啰。
406 Not Acceptable
服務(wù)器生成的響應(yīng)無(wú)法被客戶端所接受愁拭。
407 Proxy Authentication Required
用戶必須首先使用代理服務(wù)器進(jìn)行驗(yàn)證,這樣請(qǐng)求才會(huì)被處理亏吝。
408 Request Timeout
請(qǐng)求超出了服務(wù)器的等待時(shí)間岭埠。
409 Conflict
由于沖突,請(qǐng)求無(wú)法被完成。
410 Gone
被請(qǐng)求的頁(yè)面不可用惜论。
411 Length Required
"Content-Length" 未被定義许赃。如果無(wú)此內(nèi)容,服務(wù)器不會(huì)接受請(qǐng)求馆类。
412 Precondition Failed
請(qǐng)求中的前提條件被服務(wù)器評(píng)估為失敗混聊。
413 Request Entity Too Large
由于所請(qǐng)求的實(shí)體的太大,服務(wù)器不會(huì)接受請(qǐng)求乾巧。
414 Request-url Too Long
由于url太長(zhǎng)句喜,服務(wù)器不會(huì)接受請(qǐng)求。當(dāng)post請(qǐng)求被轉(zhuǎn)換為帶有很長(zhǎng)的查詢信息的get請(qǐng)求時(shí)沟于,就會(huì)發(fā)生這種情況咳胃。
415 Unsupported Media Type
由于媒介類型不被支持,服務(wù)器不會(huì)接受請(qǐng)求旷太。
416 Requested Range Not Satisfiable
服務(wù)器不能滿足客戶在請(qǐng)求中指定的Range頭拙绊。
417 Expectation Failed
執(zhí)行失敗。
423
鎖定的錯(cuò)誤泳秀。
5xx:服務(wù)器錯(cuò)誤
500 Internal Server Error
請(qǐng)求未完成标沪。服務(wù)器遇到不可預(yù)知的情況。
500.12
應(yīng)用程序正忙于在 Web 服務(wù)器上重新啟動(dòng)嗜傅。
500.13
Web 服務(wù)器太忙金句。
500.15
不允許直接請(qǐng)求 Global.asa。
500.16
UNC 授權(quán)憑據(jù)不正確吕嘀。這個(gè)錯(cuò)誤代碼為 IIS 6.0 所專用违寞。
500.18
URL 授權(quán)存儲(chǔ)不能打開。這個(gè)錯(cuò)誤代碼為 IIS 6.0 所專用偶房。
500.100
內(nèi)部 ASP 錯(cuò)誤趁曼。
501 Not Implemented
請(qǐng)求未完成。服務(wù)器不支持所請(qǐng)求的功能棕洋。
502 Bad Gateway
請(qǐng)求未完成挡闰。服務(wù)器從上游服務(wù)器收到一個(gè)無(wú)效的響應(yīng)。
502.1
CGI 應(yīng)用程序超時(shí)掰盘∩忝酰 ·
502.2
CGI 應(yīng)用程序出錯(cuò)。
503 Service Unavailable
請(qǐng)求未完成愧捕。服務(wù)器臨時(shí)過載或當(dāng)機(jī)奢驯。
504 Gateway Timeout
網(wǎng)關(guān)超時(shí)。
505 HTTP Version Not Supported
服務(wù)器不支持請(qǐng)求中指明的HTTP協(xié)議版本