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.pswp.cn/news/260098.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260098.shtml
英文地址,請注明出處:http://en.pswp.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…