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 实现代理服务器的主要内容,如果未能解决你的问题,请参考以下文章

python 实现代理服务器

静态Web服务器-返回固定页面数据Python解释器详解实现代理池的API模块

静态Web服务器-命令行启动动态绑定端口号Python解释器详解实现代理池的API模块

代码片段 - Golang 实现简单的 Web 服务器

Python3 爬虫U03_ProxyHandler实现代理

Forge Viewer - 如何在场景中访问(或获取渲染/片段代理)克隆的网格?