python的socks5全局代理_Python写的Socks5协议代理服务器

直接上代码:

#!/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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Zencart 给DHL运费模块增加一个分区的方法

Zencart 给DHL运费模块增加一个分区的方法 zencart給DHL運費模塊添加一個分區的方法很簡單&#xff0c;因爲該模塊已經做好了允許用戶添加更多分區的設置。 具體方法如下&#xff1a; 首先打開該運費模塊&#xff08;includes\modules\shipping\dhlzones.php 文件&#xff09;&…

linux 如何查看终端格式,你应该还不知道,Linux终端下的 Markdown 文档查看器

原标题&#xff1a;你应该还不知道&#xff0c;Linux终端下的 Markdown 文档查看器现在&#xff0c;Markdown 差不多已经成为技术文档的标准。它可以实现技术文档的快捷写作&#xff0c;以及输出发布。同样都是标记语言&#xff0c;但Markdown 文档相比HTML更加简单。一是体现在…

更换硬盘

更换硬盘 1. 根据管理平台的信息&#xff0c;找到损坏磁盘的位置 2. 取下坏盘&#xff0c;对比新盘的PN号 3. 将新的硬盘插回到磁盘柜 4. vol status -s 查看Spare Disks信息 &#xff0c;找到识别码&#xff0c;例如4a.05.15 5. disk assign 4…

Android之 Fragment

什么是Fragment&#xff1a; Android是在Android 3.0 (API level 11)开始引入Fragment的。 可以把Fragment想成Activity中的模块&#xff0c;这个模块有自己的布局&#xff0c;有自己的生命周期&#xff0c;单独处理自己的输入&#xff0c;在Activity运行的时候可以加载或者移除…

怎么用python检索法律_法律人,你的检索与处理信息的方式,决定了你的专业程度...

昨天在后台收到一位读者留言&#xff1a;“我花了2天时间到各法院官网、法律数据库网站、裁判文书及判例网站上搜索近十年我国经济类犯罪案例。好不容易将案件手动分类&#xff0c;整理判例的定罪和量刑情况给当前的案子作参考&#xff0c;现在看到了结论&#xff0c;也不敢确定…

HDU1753: 大明A+B

大明AB Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5533 Accepted Submission(s): 1870 Problem Description话说&#xff0c;经过了漫长的一个多月&#xff0c;小明已经成长了许多&#xff0c;所以他改了…

倒戈了,转投简书 --------

深情自白 还记得数月前那个月黑风高的晚上&#xff0c;笔主偶遇简书&#xff0c;被那婀娜多姿的Markdown输出深深吸引不能自拔&#xff0c;从此立下毒誓要两边同时发布。然而天有不测风云&#xff08;这边的太丑&#xff09;&#xff0c;前思后想寝食难安之后作出决定&#xff…

如何通过windows控制linux,如何从Windows远程控制Linux | MOS86

ifconfig将显示您需要连接的IP地址。 如果Linux盒具有以太网连接&#xff0c;则该地址将在eth0旁边列出。 如果以无线方式连接&#xff0c;请查找针对wlan0列出的IP地址。如果这不容易或不方便&#xff0c;则有另一种方法几乎同样简单。 在浏览器窗口中&#xff0c;连接到路由器…

简明Vim练级攻略(初学者)

http://blog.jobbole.com/18339/转载于:https://www.cnblogs.com/sherry00/p/3931023.html

安卓psp模拟器联机教程_刺激战场国际服下载方法教程!安卓ios模拟器都有

刺激战场国际服不需要VPN&#xff0c;不需要加速器。刺激战场国际服账号可以使用微信登入&#xff0c;进游戏页面点击more就可以了。安卓系统&#xff1a;①下载网易UU加速器&#xff0c;通过网易UU加速器平台直接下载。②有的机型不能通过网易UU下载&#xff0c;但是可以通过Q…

[转载] 民兵葛二蛋——第1集

转载于:https://www.cnblogs.com/6DAN_HUST/archive/2013/01/15/2860782.html

菜鸟的jQuery源码学习笔记(三)

1 each: function(callback, args) {2 return jQuery.each(this, callback, args);3 }, each:这个调用了jQuery.each方法&#xff0c;来遍历当前集合。我们先来看看jQuery.each方法: //args是一个数组 each: function(obj, callback, args) {var value,i 0,length o…

docker pdf 中文版 linux,Docker入门实战手册PDF

一、为什么要使用 Docker&#xff1f;1 、快速交付应用程序• 开发者使用一个标准的image 来构建开发容器&#xff0c;开发完成之后&#xff0c;系统管理员就可以使用这个容器来部署代码• Docker 可以快速创建容器&#xff0c;快速迭代应用程序&#xff0c;并让整个过程可见…

C#环境下的钩子详解

C#环境下的钩子详解 摘自网上供自己备查: http://www.csharpwin.com/csharpspace/2423.shtml 1、 WINDOWS的消息机制 2、 HOOK介绍 3、 HOOK链 4、 HOOK钩子的作用范围 5、 HOOK类型 6、 回调函数 7、 HOOK钩子的安装与卸载 8、 HOOK实例演示 WINDOWS的消息机制 Windows系统是…

福昕PDF阅读器的图章妙用

前几天同事发来一个pdf文件&#xff0c;说要把其中一部分遮住。我本来还想用pdf编辑软件直接给删除&#xff0c;结果发现是扫描文件制作的pdf不能编辑&#xff0c;大呼坑爹又要用ps了&#xff08;那家伙太慢&#xff0c;太占内存&#xff09;。 不想打开ps&#xff0c;于是开始…

openldap linux客户端,OpenLDAP 客户端安装部署

六、OpenLDAP客户端验证1、配置/etc/openldap/ldap.conf默认客户端不允许查询OpenLDAP条目信息&#xff0c;如果需要让客户端查询条目&#xff0c;需要添加OpenLDAP服务端的URI以及BASE条目&#xff0c;命令如下&#xff1a;2、客户端验证用户的信息添加我已经在上篇博文里面介…

奋斗的IT小小鸟

写了两集的《迷茫的IT小小鸟》&#xff0c;在经过了这么长的堕落与反思的阶段&#xff0c;终于也有点豁然开朗的感觉了&#xff0c;这学期以来浪费了太多的时间&#xff0c;本来规划的很好的时间和任务在自己一次次的说服不了自己的过程中终究没能实现&#xff0c;在这个期间更…

基于.Net Framework 4.0 Web API开发(4):ASP.NET Web APIs 基于令牌TOKEN验证的实现

概述&#xff1a; ASP.NET Web API 的好用使用过的都知道&#xff0c;没有复杂的配置文件&#xff0c;一个简单的ApiController加上需要的Action就能工作。但是在使用API的时候总会遇到跨域请求的问题&#xff0c; 特别各种APP万花齐放的今天&#xff0c;对API使用者身份角色验…

匈牙利命名法为何被淘汰_为何甲烷的习惯命名法用甲烷而不是一烷?

其实在有机化合物中文翻译早期&#xff0c;是有过用数字命名的阶段的&#xff0c;先上图。部分有机化合物在不同时期的汉译名对照那么后来为何未采用数字&#xff0c;而使用天干。与商务印书馆和郑贞文个人其实有很大关系。那么有机物中文命名的演进是怎样的呢&#xff1f;下面…

Windows下Mysql Cluster集群启动脚本与启动服务添加方法

3.2.8 集群启动脚本及启动服务注册 从上面的启动过程我们可以看出&#xff0c;Mysql集群启动命令较复杂&#xff0c;容易造成cmd窗口因误操作关闭而导致的数据库停止&#xff0c;在此我介绍一下如何将这些命令的操作变成windos的服务项&#xff0c;当windos启动时&#xff0…