如何在Windows上设置socks5代理
我用Python构建了一个简单的socks5服务器,它在本地主机上运行,但我不知道如何在windows上启用代理,以便所有传出流量都能通过代理 我尝试进入:控制面板->网络和互联网->互联网选项->连接->局域网设置->启用“为局域网使用代理”->进入高级并在socks部分输入127.0.0.1和端口号。 问题是我一直收到socks版本4请求,但在设置中没有看到socks 5选项 以下是我的socks5服务器代码,以备不时之需:如何在Windows上设置socks5代理,windows,proxy,socks,Windows,Proxy,Socks,我用Python构建了一个简单的socks5服务器,它在本地主机上运行,但我不知道如何在windows上启用代理,以便所有传出流量都能通过代理 我尝试进入:控制面板->网络和互联网->互联网选项->连接->局域网设置->启用“为局域网使用代理”->进入高级并在socks部分输入127.0.0.1和端口号。 问题是我一直收到socks版本4请求,但在设置中没有看到socks 5选项 以下是我的socks5服务器代码,以备不时之需: import socket import threading im
import socket
import threading
import select
def socks5_handshake(client: socket.socket):
"""
handle a new socks5 connection
"""
assert client.recv(1) == b'\x05'
num_of_methods = int.from_bytes(client.recv(1), 'big')
methods = []
for _ in range(num_of_methods):
methods.append(client.recv(1))
if b'\x00' not in methods:
client.sendall(b'\x05\xff')
raise Exception()
client.sendall(b'\x05\x00')
def handle_request(client: socket.socket) -> socket.socket:
"""
receive new connect request and return socket connected to specified address
"""
assert client.recv(1) == b'\x05'
assert client.recv(1) == b'\x01'
assert client.recv(1) == b'\x00'
address_type = client.recv(1)
assert address_type in [b'\x01', b'\x03']
if address_type == b'\x01':
address = '.'.join([str(int.from_bytes(client.recv(1), 'big')) for _ in range(4)])
else:
length = int.from_bytes(client.recv(1), 'big')
address = client.recv(length).decode()
port = int.from_bytes(client.recv(2), 'big')
forward_socket = socket.socket()
forward_socket.connect((address, port))
host, port1 = forward_socket.getsockname()
client.sendall(b'\x05\x00\x00\x01' + bytes([int(byte) for byte in host.split('.')]) + port1.to_bytes(2, 'big'))
return forward_socket
def handle_client(client: socket.socket):
try:
socks5_handshake(client)
forward_socket = handle_request(client)
except Exception:
client.close()
return
# send back and fourth messages between the 2 sockets
while True:
r, w, x = select.select([client, forward_socket], [], [])
if client in r:
try:
data = client.recv(4096)
forward_socket.sendall(data)
assert data
except Exception:
forward_socket.close()
client.close()
return
if forward_socket in r:
try:
data = forward_socket.recv(4096)
client.sendall(data)
assert data
except Exception:
forward_socket.close()
client.close()
server_socket = socket.socket()
server_socket.bind(('127.0.0.1', 2345))
server_socket.listen(5)
while True:
conn, add = server_socket.accept()
threading.Thread(target=handle_client, args=(conn,)).start()