一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python實現簡單的代理服務器

Python實現簡單的代理服務器

2020-07-27 10:37Sephiroth Python

這篇文章主要介紹了Python實現簡單的代理服務器,可實現代理服務器基本的包轉發功能,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了Python實現簡單的代理服務器。分享給大家供大家參考。具體如下:

具備簡單的管理功能,運行后 telnet localhost 9000 端口可以進行管理主要功能就是做包轉發,如果有一個橋服務器,可以用來外網訪問內網用,還是很管用的

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#/bin/env python
#coding:utf-8
import socket,select,sys,time
import thread
s_list = []
def loop(cs,addr,s_ip,s_port):
 print '%s %d connected.' % addr
 ts = socket.socket()
 try:
  ts.connect((s_ip,s_port))
 except:
  cs.close()
  print '%s %d closed.' % addr
  sys.exit(0)
 while True:
  rl,wl,xl = select.select([cs.fileno(),ts.fileno()],[],[cs.fileno(),ts.fileno()])
  if len(xl) > 0:
   cs.close()
   ts.close()
   print '%s %d closed.' % addr
   sys.exit(0)
  if len(rl) > 0:
   if rl[0] == cs.fileno():
    rs = ts
    ws = cs
   else:
    rs = cs
    ws = ts
   try:
    buffer = ws.recv(10000)
    if len(buffer) == 0:
     raise
    rs.send(buffer)
   except:
    rs.close()
    ts.close()
    print '%s %d closed.' % addr
    sys.exit(0)
def mainserver(l_port,s_ip,s_port):
 global s_list
 try:
  ss = socket.socket()
  ss.bind(('0.0.0.0',l_port))
  ss.listen(10)
  s_list.append((l_port,s_ip,s_port))  
 except:
  sys.exit(0)
 while True:
  cs,addr = ss.accept()
  thread.start_new_thread(loop,(cs,addr,s_ip,s_port))
def manager(l_port):
 global start,s_list
 ss = socket.socket()
 ss.bind(('0.0.0.0',l_port))
 ss.listen(10)
 while True:
  cs,addr = ss.accept()
  cs.send("""trans server 1.0\r\ntype 'help' to get help\r\n""")
  buffer = ''
  while True:
   buf = cs.recv(10000)
   if len(buf) == 0:
    cs.close()
    break
   if buf[-1] not in ('\r','\n'):
    buffer += buf
    continue
   buffer += buf
   cmd = buffer.strip()
   buffer = ''
   if cmd == 'exit':
    cs.close()
    break
   elif cmd == 'stop':
    start = 0
    cs.close()
    sys.exit(0)
   elif cmd == 'list':
    b = ''
    for l in s_list:
     b += '%4d %s:%d\r\n' % l
    if len(b) > 0:
     cs.send(b)
   elif cmd in ('help','?'):
    cs.send("""-------------------------------------------\r
exit\r
 exit telnet\r
start localport serverip:serverport\r
 start a new server\r
list\r
 list all server\r
-------------------------------------------\r
""")
   else:
    cmds = cmd.split(" ",1)
    if len(cmds) > 1 and cmds[0] == 'start':
     args = cmds[1].strip().split(" ",1)
     if len(args) != 2:
      cs.send('start localport serverip:serverport\r\n')
      continue
     arg = args[1].split(":",1)
     if len(arg) != 2:
      cs.send('start localport serverip:serverport\r\n')
      continue
     try:
      l_port = int(args[0])
      s_ip = arg[0]
      s_port = int(arg[1])
     except:
      cs.send('start localport serverip:serverport\r\n')
      continue
     thread.start_new_thread(mainserver,(l_port,s_ip,s_port))
     cs.send('start OK!\r\n')
    else:
     cs.send('no command [%s]\r\n' % cmd)
     continue
def main():
 global start
 if len(sys.argv) == 3:
  try:
   l_port = int(sys.argv[1])
   s_ip,s_port = sys.argv[2].split(":")
   s_port = int(s_port)
   thread.start_new_thread(mainserver,(l_port,s_ip,s_port))
  except:
   pass
 start = 1
 thread.start_new_thread(manager,(9000,))
 while start:
  time.sleep(1)
if __name__ == '__main__':
 start = 0
 main()

希望本文所述對大家的Python程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人精品第一区二区 | 成人午夜在线视频 | 描写细腻的高h肉 | 免费网站看v片在线成人国产系列 | 久久九九有精品国产23百花影院 | 日本动漫xxxxxx| 午夜精品久久久久久 | 亚洲品质水蜜桃 | 2021国产麻豆剧传媒剧情动漫 | 和直男装修工在工地啪 | 超级乱淫伦短篇小说做车 | jizz 日本亚洲| 男人j放进女人的p视频免费 | 明星ai人脸替换脸忘忧草 | 91免费播放人人爽人人快乐 | 小鸟酱在线播放 | 丰满的闺蜜2中文字幕 | 四虎 2022 永久网站 | 日本大尺度激情做爰叫床 | 日韩a无吗一区二区三区 | 美琪美腿白丝交小说 | 牛牛色婷婷在线视频播放 | 99热在线观看免费 | 美女日b视频 | 亚洲国产99999在线精品一区 | 久久精品热在线观看85 | 女女性恋爱视频入口 | 出轨同学会2在线观看 | 92国产福利久久青青草原 | 青草国内精品视频在线观看 | 红色毛片| 男男gaygays中国| 久久99精品涩AV毛片观看 | 欧美a级v片在线观看一区 | 美女用手扒自己下部 | 四虎成人免费 | 国产精品高清一区二区三区 | 亚洲日韩精品欧美一区二区一 | 肥胖女性大bbbbbb视频女厕 | 欧美另类videos另类粗暴 | 国产麻豆视频 |