国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python的HTTP非阻塞代理V1.0

2019-11-08 03:10:14
字體:
來源:轉載
供稿:網友

__init__.py

from PRoxy import Proxyfrom server import Serverimport judge

judge.py

#coding=utf8    def methodJudge(method):    if method == 'POST':        return True    else:        return False    def protoclJudge(protocol):    #請求的鏈接URL    if protocol=='http':        return True    else:        return False        def serverJudge(server):    #判斷服務是否為:xdcs-collector    if server=="xdcs-collector":        return True    else:        return False    def interfaceJudge(interface):    if interface=='/api/v1/statistics':        return True    else:        return False    

proxy.py

#coding=utf8import socket,selectfrom judge import serverJudgeclass Proxy(object):    def __init__(self,soc):        self.client,_=soc.accept()        self.target=None        self.request_url=None        self.BUFSIZE=4096        self.method=None        self.targetHost=None            def getClientRequest(self):        request=self.client.recv(self.BUFSIZE)        if not request:            return None        cn=request.find('/n')        firstLine=request[:cn]        print firstLine[:len(firstLine)-9]        line=firstLine.split()        self.method=line[0]        self.targetHost=line[1]        if serverJudge(self.targetHost):            return request        def commonMethod(self,request):        tmp=self.targetHost.split('/')        net=tmp[0]+'//'+tmp[2]        request=request.replace(net,'')        targetAddr=self.getTargetInfo(tmp[2])        try:            (fam,_,_,_,addr)=socket.getaddrinfo(targetAddr[0],targetAddr[1])[0]        except Exception as e:            print e            return        self.target=socket.socket(fam)        self.target.connect(addr)        self.target.send(request)        self.nonblocking()            def connectMethod(self,request):         pass        def run(self):        request=self.getClientRequest()        if request:            #if self.method in ['GET','POST','PUT',"DELETE",'HAVE']:            if self.method in ['POST']:                self.commonMethod(request)            elif self.method=='CONNECT':                #self.connectMethod(request)                pass                    def nonblocking(self):        inputs=[self.client,self.target]        while True:            #readable,writeable,errs=select.select(inputs,[],inputs,3)            readable,_,errs=select.select(inputs,[],inputs,3)            if errs:                break            for soc in readable:                data=soc.recv(self.BUFSIZE)                if data:                    if soc is self.client:                        self.target.send(data)                    elif soc is self.target:                        self.client.send(data)                else:                    break        self.client.close()        self.target.close()            def getTargetInfo(self,host):        port=0        site=None        if ':' in host:            tmp=host.split(':')            site=tmp[0]            port=int(tmp[1])        else:            site=host            port=80        return site,port

server.py

#coding=utf8import socketfrom  proxy  import Proxyimport threaddef Server(host,port):        #backlog = 5     server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)     server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)    server.bind((host,port))     server.listen(5)     while True:        thread.start_new_thread(Proxy(server).run,())        def test():    print "run test()"    host="192.168.62.33"    port=8888    Server(host, port)if __name__=='__main__':    test()

Run.py

#coding=utf8from Lib import Server'''創建一個函數用來運'''def run():    host=raw_input("Enter the hostip:")    port=raw_input("Enter the port:")    print "Server HTTP On %s  Port %s" %(host,port)    Server(host,int(port))    if __name__=='__main__':    run()    


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 呈贡县| 余江县| 贺兰县| 梓潼县| 财经| 安岳县| 三门峡市| 大关县| 海宁市| 海丰县| 宁南县| 陆河县| 松潘县| 桐乡市| 博客| 崇州市| 丰原市| 德昌县| 五大连池市| 蕉岭县| 永嘉县| 南部县| 陈巴尔虎旗| 阜康市| 当阳市| 乐山市| 阿合奇县| 文登市| 巧家县| 隆德县| 宽城| 甘孜| 拜城县| 峨山| 湟源县| 福泉市| 南昌县| 怀仁县| 广安市| 临猗县| 盐源县|