直接上代码:

#!/usr/bin/python

# Filename s5.py

# Python Dynamic Socks5 Proxy

# Usage: python s5.py 1080

# Background Run: nohup python s5.py 1080 &

import socket, sys, select, SocketServer, struct, time

class ThreadingTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): pass

class 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: break

if remote in r:

if sock.send(remote.recv(4096)) <= 0: break

def handle(self):

try:

pass # print 'from ', self.client_address nothing to do.

sock = self.connection

# 1. Version

sock.recv(262)

sock.send("\x05\x00");

# 2. Request

data = self.rfile.read(4)

mode = ord(data[1])

addrtype = ord(data[3])

if addrtype == 1: # IPv4

addr = socket.inet_ntoa(self.rfile.read(4))

elif addrtype == 3: # Domain name

addr = self.rfile.read(ord(sock.recv(1)[0]))

port = struct.unpack('>H', self.rfile.read(2))

reply = "\x05\x00\x00\x01"

try:

if mode == 1: # 1. Tcp connect

remote = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

remote.connect((addr, port[0]))

pass # print 'To', addr, port[0] nothing do to.

else:

reply = "\x05\x07\x00\x01" # Command not supported

local = remote.getsockname()

reply += socket.inet_aton(local[0]) + struct.pack(">H", local[1])

except socket.error:

# Connection refused

reply = '\x05\x05\x00\x01\x00\x00\x00\x00\x00\x00'

sock.send(reply)

# 3. Transfering

if reply[1] == '\x00': # Success

if mode == 1: # 1. Tcp connect

self.handle_tcp(sock, remote)

except socket.error:

pass #print 'error' nothing to do .

except IndexError:

pass

def main():

filename = sys.argv[0];

if len(sys.argv)<2:

print 'usage: ' + filename + ' port'

sys.exit()

socks_port = int(sys.argv[1]);

server = ThreadingTCPServer(('', socks_port), Socks5Server)

print 'bind port: %d' % socks_port + ' ok!'

server.serve_forever()

if __name__ == '__main__':

main()

python的socks5全局代理_Python写的Socks5协议代理服务器相关推荐

  1. python 设置全局代理_Python中使用socks5设置全局代理的方法示例

    0x01介绍 PySocks使您可以通过SOCKS和HTTP代理服务器发送流量.它是SocksiPy的现代分支,具有错误修复和其他功能. 0x02 安装 λ pip3 install Pysocks ...

  2. python socks代理_Python中使用socks5设置全局代理的方法示例

    0x01介绍 PySocks使您可以通过SOCKS和HTTP代理服务器发送流量.它是SocksiPy的现代分支,具有错误修复和其他功能. 0x02 安装 λ pip3 install Pysocks ...

  3. Android手机上使用Socks5全局代理-教程+软件

    前言:在Android上使用系统自带的代理,限制灰常大,仅支持系统自带的浏览器.这样像QQ.飞信.微博等这些单独的App都不能使用系统的代理.如何让所有软件都能正常代理呢?ProxyDroid这个软件 ...

  4. 手机用Postern配置socks5全局代理详细教程

    以静态Socks5独享IP的单地区资源为例,即IP资源全部归属单一城市,不会变动,如南京区域,则IP全部为南京城市出口. 关于Socks5的使用有多种方案,可应用于PC,安卓,模拟器,请根据情况灵活使 ...

  5. python全局代理_Python程序中设置HTTP代理

    0x00 前言 大家对HTTP代理应该都非常熟悉,它在很多方面都有着极为广泛的应用.HTTP代理分为正向代理和反向代理两种,后者一般用于将防火墙后面的服务提供给用户访问或者进行负载均衡,典型的有Ngi ...

  6. python做数据库压力测试_Python 写的一个MongoDB压力测试

    Python 写的一个MongoDB压力测试 $ pip install pymongo #!/usr/bin/env python #coding=utf-8 #Author: Ca0Gu0 fro ...

  7. python语言如何软件搬家_python写程序-就像搬家把物品分类放在箱子里

    我是一只python小白,今天在学习python写程序时,收到既是领导又是老师的ray的启发,明白了写程序就像搬家,打包归置分为不同的箱子,分享给大家. python写程序就像搬家打包物品,需要很多的 ...

  8. python怎么查看网页编码格式_Python写爬虫时如果碰到以Request Payload格式传输数据怎么办?...

    文 | 猿天罡 前言 最近想用 Python 自动地爬取某个站点里的图片,没想到其请求数据是以request payload格式传输给后端进行处理的.博主还是第一次遇到这种情况,写下这篇文章记录一下解 ...

  9. python中怎么编写程序_python写完程序怎么运行

    安装并配置完成之后,我们就可以编写第一个python程序.学过其他语言的兄弟姐妹们,都知道语言的入门程序就是hello world.那么,我们这里也以hello world来抛砖引玉,打开python ...

最新文章

  1. 2014年MCM美国大学生数学建模——From my perspective
  2. 64位环境编译DiskSim 4.0
  3. bzoj3124 [Sdoi2013]直径 直径+树形dp
  4. 音频播放时,将前台服务和通知栏关闭
  5. 服务器体系(SMP, NUMA, MPP)与共享存储器架构(UMA和NUMA)
  6. IOS实现打电话后回调
  7. 给出中序和前序求后序Java,已知二叉樹前序,中序遍歷,求后序遍歷,java實現...
  8. 小黑小波比.Ubuntu14.04安装ffmpeg以及使用ffmpeg
  9. 云桌面选不对,再好的产品也白用
  10. 网络计算机信号属于什么信号,数字信号
  11. C#版 微信无痕僵尸粉检测工具源码
  12. linux如何卸载telnet命令,linux安装telnet命令
  13. 计算机基础教程(一)
  14. Oracle SQL脚本批量导入导出
  15. 圆锥曲线一些奇怪的例题模型
  16. Linux安装JDK步骤
  17. 现有的DoS(DDoS)防御技术整理
  18. 混合现实开发教程unity2017
  19. halcon19.11深度学习关于分类入门案例
  20. linux的内网地址映射到公网地址

热门文章

  1. 浅谈 Vue 项目优化
  2. 享元模式 - 结构型模式
  3. Python3基础 __repr__ 类的实例对象的名字 可以打印文字(1)
  4. WCF系列教程之WCF客户端调用服务
  5. 【WIN10】VisualStateManager使用說明
  6. 记了老是忘记那就写下来吧宏任务微任务
  7. linux --- 高级指令
  8. node --- 创建一个Socket客户端连接到服务器
  9. ES5 数组扩展方法 forEach/filter/map的使用与重写
  10. chrome浏览器开发模式实现跨域