python 实现代理服务器
Posted Please Call me 小强
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 代理服务器。 无需指定目的服务器,自动读取地址并连接。
以上是关于python 实现代理服务器的主要内容,如果未能解决你的问题,请参考以下文章
静态Web服务器-返回固定页面数据Python解释器详解实现代理池的API模块
静态Web服务器-命令行启动动态绑定端口号Python解释器详解实现代理池的API模块