2012-04-08 3 views
0

나는 내 자신의 프록시 서버를위한 코드를 파이썬으로 작성하고있다.프록시를 통해 전송되는 패킷의 URL을 바꾸는 방법은 무엇입니까?

def _read_write(self): 
     if self.target: 
      pass 
     else: 
      domain, port = self.get_target_host() 
      self._connect_target(domain, port) 

     self.target.send(self.headers) 

     maxtimeout = self.timeout/3 
     inputs = [self.client, self.target] 
     count = 0 
     try: 

      while 1: 
       count += 1 
       (recv, send, err) = select.select(inputs, [], inputs) 

       if err: 
        break 

       if recv: 
        for in_ in recv: 
         data = in_.recv(BUFFLEN) 

         if in_ is self.client: 
          out = self.target 
         else: 
          out = self.client 

         if data: 
          out.send(data) 
          count = 0 
       if count == maxtimeout: 
        break 
     except select.error: 
      print >> sys.stderr, "Error : Internal queue error\n", "Reason : Unknown" 

지금 각 패킷을 개별적으로 클라이언트에서 서버로 전송되기 때문에, 나는 자원 등의 URL을 전송되는 데이터를 가로 채 교체하려면 다음과 같이 클라이언트와 대상 서버에서 패킷을 전송하는 코드는 이미지, CSS 등으로 클라이언트의 가장 가까운 서버에 새로운 URL을 추가합니다. 이것이 올바른 방법일까요? 나는 URL이 패킷들로 분리되어 있다면 문제가 생길 것이라고 생각한다.

답변

0

오른쪽 - 패킷 수준에서이를 수행하기가 어려울 것입니다. 더 쉬운 방법은 먼저 프록시에 전체 데이터를 작성한 다음 처리하고 클라이언트에 데이터를 보내는 것입니다.

+0

처음에는 그랬지만 뭔가 잘못되었습니다. 스크립트를 실행하는 데 많은 시간이 필요합니다. 내가하고 싶은 것은 URL을 CDN URL로 대체하는 것입니다. CDN을 개발하는 방법에 대한 정보를 찾을 수 없습니다. – vedarthk

관련 문제