91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中怎么實現代理服務器

發布時間:2021-08-10 14:16:46 來源:億速云 閱讀:176 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關Python中怎么實現代理服務器,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

這里就是使用Python簡單的實現一個二級代理。

#coding=utf-8 
import socket 
import select 
import sys 
import threading
import time
import logging
import os
logsDir = "logs"
if not os.path.isdir(logsDir):
    os.mkdir(logsDir)
    
logging.basicConfig(level=logging.DEBUG,
                format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                datefmt='%a, %d %b %Y %H:%M:%S',
                filename='logs/logs.log',
                filemode='a')
 
#C的IP和端口 
to_addr = ('127.0.0.1', 8087)


maxConnetions = 32
class Proxy: 
    def __init__(self, addr): 
        self.proxy = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
        self.proxy.bind(addr) 
        self.proxy.listen(maxConnetions) 
        self.inputs = {self.proxy:None} 
        self.route = {} 
   
    def serve_forever(self): 
        logging.info('proxy listen...')
        while 1: 
            readable, _, _ = select.select(list(self.inputs.keys()), [], []) 
            for self.sock in readable: 
                if self.sock == self.proxy: 
                    self.on_join() 
                else:
                    try:
                        data = self.sock.recv(8192)
                    except Exception, e:
                        logging.error(str(e))
                        self.on_quit()
                        continue
                    
                    if not data: 
                        self.on_quit() 
                    else:
                        try:
                            self.route[self.sock].send(data)
                        except Exception, e:
                            logging.error(str(e))
                            self.on_quit()
                            continue
   
    def on_join(self): 
        client, addr = self.proxy.accept() 
        logging.info("proxy client " + str(addr) + 'connect')
        forward = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
        try:
            forward.connect(to_addr)
        except Exception, e:
            logging.error(str(e))
            client.close()
            return
        self.inputs [client] = None
        self.inputs [forward] = None


        self.route[client] = forward 
        self.route[forward] = client 
    
    #刪除連接
    def on_quit(self):
        ls = [self.sock]
        if self.sock in self.route:
            ls.append(self.route[self.sock])
        for s in ls:
            if s in self.inputs:
                del self.inputs[s]
            if s in self.route:
                del self.route[s] 
            s.close() 
            
if __name__ == "__main__":
    try: 
        Proxy(('', 8192)).serve_forever()
    except KeyboardInterrupt, e: 
        logging.error("KeyboardInterrupt" + str(e))

上述就是小編為大家分享的Python中怎么實現代理服務器了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

军事| 吐鲁番市| 会宁县| 呈贡县| 勐海县| 南宁市| 平湖市| 五大连池市| 延边| 昭平县| 常州市| 科尔| 穆棱市| 子长县| 阿拉善左旗| 沭阳县| 岳阳县| 尼玛县| 马边| 肃北| 安塞县| 罗城| 富宁县| 韩城市| 景洪市| 贡嘎县| 康定县| 昭觉县| 会宁县| 都匀市| 新野县| 莒南县| 萝北县| 东乡| 缙云县| 禄劝| 阳新县| 定边县| 平邑县| 白朗县| 宝坻区|