加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python实现HTTP代理服务器

发布时间:2020-12-17 17:26:53 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 这些天闲来无事就研究了下HTTP代理原理,顺便用Python做了个很挫的程序。 import socketimport threadingclass ProxyServer(): def __init__(self): s

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

这些天闲来无事就研究了下HTTP代理原理,顺便用Python做了个很挫的程序。
import socket

import threading

class ProxyServer():

   def __init__(self):

       self.ListenSock = socket()

       self.ListenSock.bind()

       self.Clients = []

 

 

   def listen_thread(self):

       self.ListenSock.listen()

       while(1):

          self.Clients.append(ProxyClient(self.ListenSock.accpet())

 

 

    def start_work(self):

       start listen_thread

       while(1):

#从内存中踢出已经断开的连接

           for i in self.client:

                if i not alive:

                self.clients.remove(i)

 

 


class ProxyClient():

    def __init__(self,Csock):

       self.Csock = Csock

       self.Rsock = None

       start request_process_thread

 

 

   def request_process_thread(self):

       while(1):

       req = self.Csock.recv()

 

       #客户端断开了

       if req == '':

           return

 

       #从请求中获得客户端想要访问的地址

       addr = get addr from req

 

       if self.Rsock == None:

           self.Rsock.connect(addr)

           #把客户端的请求转出去

           self.Rscok.send(req)

           #开启接受web data的线程,把web data转发给客户端

           start recv_web_data_thread

       else:

           #如果连接已经建立就不要再去创建新的

           self.Rsock.send(req)

 

   def recv_web_data_thread(self):

       while(1):

           data = self.Rsock.recv()

           if data=='':

               return

           #把web data转发给客户端

           self.Csock.send(data)

?
原文地址: Python实现HTTP代理服务器 作者: 大地瓜

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读