Silverlight Socket 使用代理连接服务器

本文详细介绍了如何通过HTTP、SOCK4、SOCK5代理连接服务器,包括SOCK4协议、SOCK5非验证模式、SOCK5验证模式的客户端请求包和服务器回复包协议解析,以及HTTP代理连接成功的检测方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此代码实现通过 HTTP, SOCK4, SOCK5 代理连接服务器

1. SOCK4 (Sock4.cs)

客户端请求包协议(OnConnected):

VN

CD

DSTPORT

DSTIP

NULL

1B

1B

2B

4B

1B

服务器回复包协议(OnReceived):

VN

CD

DSTPORT

DSTIP

1B

1B

2B

4B

检测 VN == 0 && CD == 90 即为代理成功

 

2. SOCK5 非验证模式 (Sock5.cs)

客户端请求包协议(OnConnected):

VER

NMETHODS

METHODS

1B

1B

1B

服务器回复包协议(OnReceived):

VER

METHOD

1B

1B

服务器回复后. 检测

VER == 5 && METHOD == 0 成功后, 发送请求代理协议包

客户端请求包协议(OnReceived):

VER

CMD

RSV

ATYP

DST.ADDR

DST.PORT

1B

1B

1B

1B

4B

2B

服务器回复包协议(OnReceived):

VER

CMD

RSV

ATYP

BND.ADDR

BND.PORT

1B

1B

1B

1B

4B

2B

检测 VER == 5 && CMD == 0 即为代理成功

 

3. SOCK5 验证模式 (Sock5Auth.cs) 

注: RFC 中未找到请求验证包协议,本人根据 C++ 程序分析自行整理. 如有错误,请告知.

客户端请求包协议(OnConnected):

VER

NMETHODS

METHODS

1B

1B

1B

服务器回复包协议(OnReceived):

VER

METHOD

1B

1B

服务器回复后. 检测

VER == 5 && METHOD == 2 成功后, 发送验证代理协议包

客户端请求包协议(OnReceived):

CMD

LENGTH

USERNAME

LENGTH

PASSWORD

1B

1B

NB

1B

NB

服务器回复包协议(OnReceived):

CMD

REP

1B

1B

检测 CMD == 1 && REP == 0, 发送请求代理协议包

客户端请求包协议(OnReceived):

VER

CMD

RSV

ATYP

DST.ADDR

DST.PORT

1B

1B

1B

1B

4B

2B

服务器回复包协议(OnReceived):

VER

CMD

RSV

ATYP

BND.ADDR

BND.PORT

1B

1B

1B

1B

4B

2B

检测 VER == 5 && CMD == 0 即为代理成功

 

 

4. HTTP (HTTP.cs)

注: 未找到相关RFC文档. 请求验证包协议,本人根据 C++ 程序分析自行整理. 如有错误,请告知.

客户端请求包协议(OnReceived):

CONNECT IP:PORT HTTP/1.1\r\nUser-Agent: MyApp/0.1\r\n\r\n

服务器回复包协议(OnReceived):

返回字符串中包含  HTTP/1.1 200 OK 或者 HTTP/1.0 200 即为代理成功

 

附上源码下载:

http://files.cnblogs.com/hackerttao/SilverlightProxy.7z

转载于:https://www.cnblogs.com/hackerttao/archive/2012/11/03/2752667.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值