zoukankan      html  css  js  c++  java
  • python 实现代理服务器

    # encoding:utf-8
    import socket
    import thread
    import re
    
    def getAddr(d):
     a = re.search("Host: (.*)
    ", 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 代理服务器。 无需指定目的服务器,自动读取地址并连接。

  • 相关阅读:
    121. Best Time to Buy and Sell Stock
    分页查询
    ViewPager
    SharedPreferences
    android 动画
    display~
    stringBuffer拼接有规律字符串
    修改placehosder
    this Activity.this Activity.class
    Windows基础编程SDK复习知识点
  • 原文地址:https://www.cnblogs.com/dzqdzq/p/9822187.html
Copyright © 2011-2022 走看看