1. 程式人生 > >python 實現代理服務器

python 實現代理服務器

color 地址 add 目的 lse cli data .so exceptio

# encoding:utf-8
import socket
import thread
import re

def getAddr(d):
 a = re.search("Host: (.*)\r\n", d)
 host = a.group(1)
 a = host.split(":")
 if len(a) == 1:
  return (a[0], 80)
 else:
  return (a[0], int(a[1]))

def client(conn, caddr):
    while 1:
        try:
            data = conn.recv(4096)

            s 
= socket.socket(socket.AF_INET, socket.SOCK_STREAM) addr = getAddr(data) print "目的服務器:",addr s.connect(addr) print 發給目的服務器數據:,data s.sendall(data)#將請求數據發給目的服務器 d = s.recv(40960)#接收目的服務器發過來的數據 s.close()#斷開與目的服務器的連接 print
接收目的服務器數據:,d conn.sendall(d)#發送給代理的客戶端 except Exception, e: print 代理的客戶端異常:%s, ERROR:%s%(caddr,e) conn.close() break def serve(PORT = 10086): # 創建 IP = "0.0.0.0" s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((IP, PORT)) s.listen(
10) print proxy start... while True: conn, addr = s.accept() print conn:, conn print "addr:", addr thread.start_new_thread(client, (conn, addr)) try: serve() except Exception as e: print 代理服務器異常,e print server end!!!

http 代理服務器。 無需指定目的服務器,自動讀取地址並連接。

python 實現代理服務器