python代理訪問
『壹』 python隨便給了個代理IP居然也能正常訪問,這是為啥
不同的狀態碼代表著不同含義。
200並不代表正常訪問並獲取到返回值。只是表明正確處理了請求而已。
你隨便設置的代理ip有可能真的存在這是一方面,另一方面代理只是鏈接與轉發功能。200的狀態碼也並不能表示代理成功讓你訪問到了目標網址並獲取到了正確的返回信息。
常見的狀態碼有很多,404、400、500等等。
以下資料摘自(csdn博客:https://blog.csdn.net/xiaoxiaode_shu/article/details/80700801)
1開頭的http狀態碼
表示臨時響應並需要請求者繼續執行操作的狀態代碼。
100 (繼續) 請求者應當繼續提出請求。 伺服器返回此代碼表示已收到請求的第一部分,正在等待其餘部分。
101 (切換協議) 請求者已要求伺服器切換協議,伺服器已確認並准備切換。
2開頭的http狀態碼
表示請求成功
200 成功處理了請求,一般情況下都是返回此狀態碼;
201 請求成功並且伺服器創建了新的資源。
202 接受請求但沒創建資源;
203 返回另一資源的請求;
204 伺服器成功處理了請求,但沒有返回任何內容;
205 伺服器成功處理了請求,但沒有返回任何內容;
206 處理部分請求;
3xx (重定向)
重定向代碼,也是常見的代碼
300 (多種選擇) 針對請求,伺服器可執行多種操作。 伺服器可根據請求者 (user agent) 選擇一項操作,或提供操作列表供請求者選擇。
301 (永久移動) 請求的網頁已永久移動到新位置。 伺服器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。
302 (臨時移動) 伺服器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。
303 (查看其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索響應時,伺服器返回此代碼。
304 (未修改) 自從上次請求後,請求的網頁未修改過。 伺服器返回此響應時,不會返回網頁內容。
305 (使用代理) 請求者只能使用代理訪問請求的網頁。 如果伺服器返回此響應,還表示請求者應使用代理。
307 (臨時重定向) 伺服器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。
4開頭的http狀態碼表示請求出錯
400 伺服器不理解請求的語法。
401 請求要求身份驗證。 對於需要登錄的網頁,伺服器可能返回此響應。
403 伺服器拒絕請求。
404 伺服器找不到請求的網頁。
405 禁用請求中指定的方法。
406 無法使用請求的內容特性響應請求的網頁。
407 此狀態代碼與 401類似,但指定請求者應當授權使用代理。
408 伺服器等候請求時發生超時。
409 伺服器在完成請求時發生沖突。 伺服器必須在響應中包含有關沖突的信息。
410 如果請求的資源已永久刪除,伺服器就會返回此響應。
411 伺服器不接受不含有效內容長度標頭欄位的請求。
412 伺服器未滿足請求者在請求中設置的其中一個前提條件。
413 伺服器無法處理請求,因為請求實體過大,超出伺服器的處理能力。
414 請求的 URI(通常為網址)過長,伺服器無法處理。
415 請求的格式不受請求頁面的支持。
416 如果頁面無法提供請求的范圍,則伺服器會返回此狀態代碼。
417 伺服器未滿足」期望」請求標頭欄位的要求。
5開頭狀態碼並不常見,但是我們應該知道
500 (伺服器內部錯誤) 伺服器遇到錯誤,無法完成請求。
501 (尚未實施) 伺服器不具備完成請求的功能。 例如,伺服器無法識別請求方法時可能會返回此代碼。
502 (錯誤網關) 伺服器作為網關或代理,從上游伺服器收到無效響應。
503 (服務不可用) 伺服器目前無法使用(由於超載或停機維護)。 通常,這只是暫時狀態。
504 (網關超時) 伺服器作為網關或代理,但是沒有及時從上游伺服器收到請求。
505 (HTTP 版本不受支持) 伺服器不支持請求中所用的 HTTP 協議版本。
『貳』 Python設計模式 - 代理模式
"""
代理模式(Proxy):為某個對象提供一種代理以控制對這個對象的訪問。
注意:代理模式和策略模式的類圖很相近,實現方法也是一樣的,但是應用場景很不一樣,體現了不同的思想。
策略模式中同一外部對象訪問上下文對象的操作一樣,但是裡面的策略對象不同。
代理模式中不同的外部對象訪問代理對象的操作一樣,但是裡面的真實對象是一樣的。
代理模式在訪問對象時引入一定程度的間接性,因為這種間接性,可以附加多種用途。
應用場景:
1、遠程代理。為一個對象在不同的地址空間提供局部代表。這樣可以隱藏一個對象存在於不同地址空間的事實。
2、虛擬代理。當要創建耗時很長的對象時,可以使用虛擬代理。虛擬代理完成的工作為新建真實對象,並在新建的過程中給出提示。比如在網頁載入圖片的過程中,虛擬代理可以用一個圖片框暫時替代真實的圖片。
3、安全代理。用於控制真實對象訪問是的許可權。
4、智能指引。當調用真實的對象時,代理處理另外一些事情,比如計算真實對象的引用次數、是否鎖定等等。
"""
import time
class SalesManager:
def talk(self):
print("銷售經理准備談")
class Proxy:
def __init__(self):
self.busy = 'No'
self.sales = None
def talk(self):
print("代理檢查銷售經理的可訪問性")
if self.busy == 'No':
self.sales = SalesManager()
time.sleep(0.1)
self.sales.talk()
else:
time.sleep(0.1)
print("銷售經理正忙")
class NoTalkProxy(Proxy):
def talk(self):
print("代理檢查銷售經理的可訪問性")
time.sleep(0.1)
print("該銷售經理也不會跟你說話不論他/她是否正忙")
if __name__ == '__main__':
p = Proxy()
p.talk()
p.busy = 'Yes'
p.talk()
p = NoTalkProxy()
p.talk()
p.busy = 'Yes'
p.talk()