﻿{"id":808,"date":"2012-04-24T18:59:22","date_gmt":"2012-04-24T10:59:22","guid":{"rendered":"http:\/\/notes.zerobox.org\/?p=808"},"modified":"2012-04-24T18:59:22","modified_gmt":"2012-04-24T10:59:22","slug":"%e5%90%84%e7%a7%8d%e7%8c%a5%e7%90%90%e9%9a%a7%e9%81%93%e8%af%81%e6%98%8e-%e4%bf%a1%e4%bb%bb%e5%9f%9f%e3%80%81%e5%ae%89%e5%85%a8%e5%9f%9f%e5%88%92%e5%88%86%e5%be%88%e9%87%8d%e8%a6%81","status":"publish","type":"post","link":"http:\/\/zerobox.org\/notes\/808.html","title":{"rendered":"\u5404\u79cd\u7325\u7410\u96a7\u9053\u8bc1\u660e \u4fe1\u4efb\u57df\u3001\u5b89\u5168\u57df\u5212\u5206\u5f88\u91cd\u8981"},"content":{"rendered":"<p><a href=\"http:\/\/notes.zerobox.org\/wp-content\/uploads\/2012\/04\/363c17fae6cd7b89496905200f2442a7d8330ec3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-809\" title=\"363c17fae6cd7b89496905200f2442a7d8330ec3\" src=\"http:\/\/notes.zerobox.org\/wp-content\/uploads\/2012\/04\/363c17fae6cd7b89496905200f2442a7d8330ec3.png\" alt=\"\" width=\"979\" height=\"661\" srcset=\"http:\/\/zerobox.org\/notes\/wp-content\/uploads\/2012\/04\/363c17fae6cd7b89496905200f2442a7d8330ec3.png 979w, http:\/\/zerobox.org\/notes\/wp-content\/uploads\/2012\/04\/363c17fae6cd7b89496905200f2442a7d8330ec3-300x202.png 300w\" sizes=\"auto, (max-width: 979px) 100vw, 979px\" \/><\/a><\/p>\n<p>\u5206\u4eab\u4e00\u4e2aPython \u521b\u5efaSocks5\u4ee3\u7406\u7684\u4ee3\u7801:<br \/>\n==============================\u7325\u7410\u7684\u5206\u5272\u7ebf==============================<\/p>\n<pre>#!\/usr\/bin\/python \r\n# Filename s5.py \r\n# Python Dynamic Socks5 Proxy \r\n# Usage: python s5.py 1080 \r\n# Backgroup Run: nohup python s5.py 1080 &amp; \r\n# Email: ringzero@557.im \r\n\r\nimport socket, sys, select, SocketServer, struct, time \r\n\r\nclass ThreadingTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): pass\r\nclass Socks5Server(SocketServer.StreamRequestHandler): \r\n    def handle_tcp(self, sock, remote): \r\n        fdset = [sock, remote] \r\n        while True: \r\n            r, w, e = select.select(fdset, [], []) \r\n            if sock in r: \r\n                if remote.send(sock.recv(4096)) &lt;= 0: break \r\n            if remote in r: \r\n                if sock.send(remote.recv(4096)) &lt;= 0: break \r\n    def handle(self): \r\n        try: \r\n            pass # print 'from ', self.client_address nothing to do. \r\n            sock = self.connection \r\n            # 1. Version \r\n            sock.recv(262) \r\n            sock.send(\"\\x05\\x00\"); \r\n            # 2. Request \r\n            data = self.rfile.read(4) \r\n            mode = ord(data[1]) \r\n            addrtype = ord(data[3]) \r\n            if addrtype == 1:       # IPv4 \r\n                addr = socket.inet_ntoa(self.rfile.read(4)) \r\n            elif addrtype == 3:     # Domain name \r\n                addr = self.rfile.read(ord(sock.recv(1)[0])) \r\n            port = struct.unpack('&gt;H', self.rfile.read(2)) \r\n            reply = \"\\x05\\x00\\x00\\x01\" \r\n            try: \r\n                if mode == 1:  # 1. Tcp connect \r\n                    remote = socket.socket(socket.AF_INET, socket.SOCK_STREAM) \r\n                    remote.connect((addr, port[0])) \r\n                    pass # print 'To', addr, port[0]  nothing do to. \r\n                else: \r\n                    reply = \"\\x05\\x07\\x00\\x01\" # Command not supported \r\n                local = remote.getsockname() \r\n                reply += socket.inet_aton(local[0]) + struct.pack(\"&gt;H\", local[1])\r\n            except socket.error: \r\n                # Connection refused \r\n                reply = '\\x05\\x05\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00' \r\n            sock.send(reply) \r\n            # 3. Transfering \r\n            if reply[1] == '\\x00':  # Success \r\n                if mode == 1:    # 1. Tcp connect \r\n                    self.handle_tcp(sock, remote) \r\n        except socket.error: \r\n            pass #print 'error' nothing to do . \r\n        except IndexError: \r\n            pass \r\ndef main(): \r\n    filename = sys.argv[0]; \r\n    if len(sys.argv)&lt;2: \r\n        print 'usage: ' + filename + ' port' \r\n        sys.exit() \r\n    socks_port = int(sys.argv[1]);     \r\n    server = ThreadingTCPServer(('', socks_port), Socks5Server) \r\n    print 'bind port: %d' % socks_port + ' ok!' \r\n    server.serve_forever() \r\nif __name__ == '__main__': \r\n    main()<\/pre>\n<p>==============================\u7325\u7410\u7684\u5206\u5272\u7ebf==============================<\/p>\n<p># \u666e\u901a\u7528\u6237\u6743\u9650\u4e0b\uff0c\u8bf7\u4f7f\u75281024\u4e4b\u540e\u7684\u7aef\u53e3\u3002<\/p>\n<p>\u4f5c\u8005\uff1aring04h\u00a0\u6765\u6e90\uff1a<a href=\"http:\/\/hi.baidu.com\/ring04h\/blog\/item\/a192a026708b59378a82a1b0.html\">http:\/\/hi.baidu.com\/ring04h\/blog\/item\/a192a026708b59378a82a1b0.html<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5206\u4eab\u4e00\u4e2aPython \u521b\u5efaSocks5\u4ee3\u7406\u7684\u4ee3\u7801: ============== &hellip;<\/p>\n<p class=\"read-more\"><a href=\"http:\/\/zerobox.org\/notes\/808.html\">\u7ee7\u7eed\u9605\u8bfb &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[193],"class_list":["post-808","post","type-post","status-publish","format-standard","hentry","tag-socks5"],"views":1126,"_links":{"self":[{"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/posts\/808","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/comments?post=808"}],"version-history":[{"count":0,"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/posts\/808\/revisions"}],"wp:attachment":[{"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/media?parent=808"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/categories?post=808"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/tags?post=808"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}