同步操作将从 mktime/python-learn 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
# -*- encoding=gbk -*-#!/usr/bin/env pythonimport socket, sys, select, SocketServer, struct, time'''it's a socks5 proxy .use it to connect restrict ip address from 130.89.200/24'''class ThreadingTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): passclass Socks5Server(SocketServer.StreamRequestHandler):def handle_tcp(self, sock, remote):fdset = [sock, remote]while True:r, w, e = select.select(fdset, [], [])if sock in r:if remote.send(sock.recv(4096)) <= 0: breakif remote in r:if sock.send(remote.recv(4096)) <= 0: breakdef handle(self):try:print 'socks connection from ', self.client_addresssock = self.connection# 1. Versionsock.recv(262)sock.send(struct.pack(">H", 0x0500))# 2. Requestdata = self.rfile.read(4)mode = ord(data[1])addrtype = ord(data[3])if addrtype == 1: # IPv4addr = socket.inet_ntoa(self.rfile.read(4))elif addrtype == 3: # Domain nameaddr = self.rfile.read(ord(sock.recv(1)[0]))port = struct.unpack('>H', self.rfile.read(2))reply = struct.pack(">L", 0x05000001)try:if mode == 1: # 1. Tcp connectremote = socket.socket(socket.AF_INET, socket.SOCK_STREAM)remote.connect((addr, port[0]))print 'Tcp connect to', addr, port[0]else:reply = struct.pack(">L", 0x05070001)local = remote.getsockname()reply += socket.inet_aton(local[0]) + struct.pack(">H", local[1])except socket.error:# Connection refusedreply = '\x05\x05\x00\x01\x00\x00\x00\x00\x00\x00'sock.send(reply)# 3. Transferingif reply[1] == '\x00': # Successif mode == 1: # 1. Tcp connectself.handle_tcp(sock, remote)except socket.error:print 'socket error'def main():server = ThreadingTCPServer(('', 1080), Socks5Server)server.serve_forever()if __name__ == '__main__':main()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。