本文实例讲述了Python简单实现的代理服务器端口映射功能。分享给大家供大家参考,具体如下:
1,模拟服务端代码
导入系统 进口套接字 进口线程 #回复消息,原样返回 def replyMessage(康涅狄格州): 而真正的: data=https://www.yisu.com/zixun/conn.recv (1024) conn.send(数据) 如果data.decode () .lower()==霸偌? 打破 conn.close () def main (): sockScr=socket.socket(插座。AF_INET socket.SOCK_STREAM) sockScr。绑定(端口)(“) sockScr.listen (200) 而真正的: 试一试: 康涅狄格州,addr=sockScr.accept () #只允许特定主机访问本服务器 如果addr [0]=> ! 导入系统 进口套接字 进口线程 def中间(康涅狄格州,addr): #面向服务器的插座 sockDst=socket.socket(插座。AF_INET socket.SOCK_STREAM) sockDst.connect ((ipServer portServer)) 而真正的: data=https://www.yisu.com/zixun/conn.recv (1024) .decode () 打印(“收到客户端消息:“+数据) 如果数据=https://www.yisu.com/zixun/='不要发给服务器”: conn.send(“该消息已被代理服务器过滤”.encode ()) 打印(“该消息已过滤”) elif data.lower()==霸偌? 打印(str (addr) +“客户端关闭连接的) 打破 其他: sockDst.send (data.encode ()) 打印(已转发服务器”) data_fromServer=sockDst.recv (1024) .decode () 打印(“收到服务器回复的消息:“+ data_fromServer) 如果data_fromServer=='不要发给客户端”: conn.send(“该消息已被代理服务器修改“.encode ()) 打印(“消息已被篡改的) 其他: conn.send (b 'Server回答:' + data_fromServer.encode ()) 打印(已转发服务器消息给客户端”) conn.close () sockDst.close () def main (): sockScr=socket.socket(插座。AF_INET socket.SOCK_STREAM) sockScr。绑定(”,portScr) sockScr.listen (200) 打印(“代理已启动”) 而真正的: 试一试: 康涅狄格州,addr=sockScr.accept () t=线程。线程(目标=中间,arg游戏=(康涅狄格州,addr)) t.start () 打印(“新客户:' + str (addr)) 除了: 通过 if __name__==癬_main__”: 试一试: #(本机IP地址,portScr) & lt;==祝辞(ipServer portServer) #代理服务器监听端口 portScr=int (sys.argv [1]) #服务器IP地址与端口号 ipServer=sys.argv [2] portServer=int (sys.argv [3]) main () 除了: print(某事错误) >之前3模拟客户端代码
导入系统 进口套接字 def main (): 袜子=socket.socket(插座。AF_INET socket.SOCK_STREAM) 袜子。连接((ip、端口)) 而真正的: data=https://www.yisu.com/zixun/input('你想问:') sock.send (data.encode ()) print (sock.recv (1024) .decode ()) 如果data.lower()==霸偌? 打破 sock.close () if __name__==癬_main__”: 试一试: #代理服务器的IP地址和端口号 ip=sys.argv [1] 端口=int (sys.argv [2]) main () 除了: print(某事错误) >之前
从结果可以看的出,代理服务器代码能够对客户端和服务器之间的内容进行记录,也能够修改双方通信内容,这样实际存在潜在危险。只要代理服务想这样做,客户在网络上的通信就没有什么隐私可言了,因此如果涉及金钱交易,最好不要使用代理服务器。
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python套接字编程技巧总结》,《Python URL操作技巧总结》,《Python数据结构与算法教程》、《Python函数使用技巧总结》,《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
Python简单实现的代理服务器端口映射功能示例