实现Sock5代理

采用stun方式和sock5穿越防火墙,来保证能在防火墙条件下通过.zip 立即下载

实现Sock5代理

有很多公司不能直接和Internet相连,必须通过代理和www连接,浏览、下载资料。
代理服务器支持的协议也有所不同,有支持Sock、HTTP代理的这样我们做的客户端软件就需要支持这些代理,使用户能够通过这些代理透过防火墙和外网相连,一般Sock分为Sock4和Sock5,这里我们只实现Sock5协议。
RFC1928描述了Socks协议的细节,告诉我们客户程序如何同Socks代理协商,取得透过该协议对外传输的途径。英文的URL为: http://www.ietf.org/rfc/rfc1928.txt,建议先了解以上链接内容后在阅读下文。另外给大家推荐学习协议的好地方: http://www.cnpaf.com中国协议分析网,有很多好东东,可以去看看。
下面说明一下实现的方法。
代理的实现方法实际就是Socket编程,只要通讯时遵循它们的协议就可以。首先理解它们的协议是关键。
示意图:

1.1    Sock5协议实现

1.1.1        Sock5协议内容

1.  客户端首先要与代理服务器连接,连接后要向代理发送版本号、认证方法、方法选择格式如下:
版本号(1字节) |  供选择的认证方法(1字节)  |  方法序列(1-255个字节长度)
如果你支持的版本为SOCK5那么版本号就为0x05;可供选择的方法是指你的协议支持几种认证方式,因为我们实现只支持一种所以就填0x01,如果你是两种就写0x02;认证方法序列包括(0x00为不需认证、0x02为需要用户名和密码认证,通常是这两种,如果想了解更多请参看Rfc1928)。
这样组合你的报文应该为:0x05 0x01 0x00
如果需要认证那么为:0x05 0x01 0x02
2.  代理接收到客户端的请求,会向客户端返回信息,格式为:
版本号 | 服务器选定的方法
如果服务器支持验证方式,返回的报文为:
0x05 0x02
3.  接下来根据服务器的验证方式,发送验证信息了,报文格式为:
0x01 | 用户名长度(1字节)| 用户名(长度根据用户名长度域指定) | 口令长度(1字节) | 口令(长度由口令长度域指定)
4.  服务器接收信息后进行验证,返回如下格式:
0x01 | 验证结果标志
验证结果标志:0x00表示验证成功,其他值均为错误码

1.1.2        Sock5协议实现

根据上面所述的步骤和协议内容,就可以实现SOCK5代理了。下面我给出我写的实现SOCKT5代理的函数代码和注释,供参考(delphi6+win2K+sp4调试通过,代理服务器用的是CCProxy6.0)
function TBZSock5ProxyApi.SetProxy(ASocket: Pointer): Integer;
var
  proxyUser, proxyPwd: String;
  bIsValid: Boolean;
  sock: 
^ TSocket;
  sockServer: TSockAddrIn;
  command: array [
0 .. 9 ] of Byte;
  re, len, ulen, plen: Integer;
//   buffer: PByte;
  buffer: array [ 0 .. 1023 ] of Byte;
begin
  sock :
=  ASocket;
  
if  FProxyParam.GetServer  =   ''  then
  begin
    Result :
=   0 ;
    Exit;
  end
  
else
  begin
    Result :
=   0 ;
    sock
^  : =  socket(AF_INET, SOCK_STREAM,  0 );
    
if  sock ^   =  INVALID_SOCKET then
    begin
      Result :
=   1 ;
      Exit;
    end;
 
    sockServer.sin_family :
=  AF_INET;
    sockServer.sin_port :
=  htons(FProxyParam.GetPort);     // 将整形数变为网络字节流
    sockServer.sin_addr.S_addr : =  inet_addr(PChar(FProxyParam.GetServer));
 
    
// 连接远程主机
     if  WinSock.connect(sock ^ , sockServer, SizeOf(sockServer))  <>   0  then
    begin
      Result :
=   1 ;
      Exit;
    end;
 
    bIsValid :
=  FProxyParam.GetProxyValid;
 
    
// 发送SOCK5协议指令
    FillChar(command,  10 ,  0 );
    command[
0 ] : =   5 ;
    
if  bIsValid then
      command[
1 ] : =   2
    
else
      command[
1 ] : =   1 ;
    
if  bIsValid then
      command[
2 ] : =   2
    
else
      command[
2 ] : =   0 ;
 
    
// 发送登陆指令
     if  bIsValid then
      re :
=  WinSock.send(sock ^ , command,  4 ,  0 )
    
else
      re :
=  WinSock.send(sock ^ , command,  3 ,  0 );
    
if  re  =  SOCKET_ERROR then
    begin
      Result :
=   1 ;
      Exit;
    end;
 
    
// 接收返回的消息
    fillchar(command,  10 ,  0 );                          // 接收前用0再次填充
    re : =  WinSock.recv(sock ^ , command,  2 ,  0 );
    
if  re  <>   2  then
    begin
      Result :
=   1 ;
      Exit;
    end;
    
if  command[ 1 ] = $FF then
    begin
      Result :
=   1 ;
      Exit;
    end;
 
    
if  (not bIsValid) and (command[ 1 ] = 0 ) then
    begin
      Exit;
    end;
 
    proxyUser :
=  FProxyParam.GetUsername;
    proxyPwd :
=  FProxyParam.GetPassword;
 
    
if  command[ 1 ]  <>   0  then
    begin
      
if  command[ 1 ]  <>   2  then
      begin
        Result :
=   1 ;
        Exit;
      end;
      
if  bIsValid then
      begin
        ulen :
=  Length(proxyUser);
        plen :
=  Length(proxyPwd);
        len :
=   3   +  ulen  +  plen;
        fillchar(buffer, 
1024 ,  0 );
 
        buffer[
0 ] : =   5 ;
        buffer[
1 ] : =  ulen;
        StrPCopy(@buffer[
2 ], proxyuser);
        buffer[
2   +  ulen] : =  plen;
        StrPCopy(@buffer[
2   +  ulen  +   1 ], proxyPwd);
 
        
// 发送验证信息
        re : =  send(sock ^ , buffer, len,  0 );
        
if  re  =  SOCKET_ERROR then
        begin
          Result :
=   1 ;
          Exit;
        end;
 
        
// 接收验证返回信息
        fillchar(command,  10 ,  0 );
        re :
=  recv(sock ^ , command,  2 ,  0 );
        
if  ((re <> 2 ) or ((command[ 0 ] <> 1 ) and (command[ 1 ] <> 0  ))) then
        begin
          Result :
=   1 ;
          Exit;
        end;
      end   
// if bisValid
       else
      begin
        Result :
=   1 ;
        Exit;
      end;                     
//
    end;  //  if command[1]<>0
  end;   // end first if
 
end;
上面的函数中有一个FproxyParam变量,它是代理参数的值对象,声明如下:
  TProxyParam 
=   class
  
private
    FUsername,        
// 代理验证用户名
    FPassword,         // 代理验证密码
    FServer: String;     // 代理服务器地址
    FPort: Integer;      // 代理服务器端口号
    FIsValid: Boolean;   // 是否验证     如果代理服务器是验证的,那么此值应该为true
 
    procedure Clear;
  
public
    constructor Create;
    procedure SetUsername(AUsername: String);
    procedure SetPassword(APassword: String);
    procedure SetServer(AServer: String);
    procedure SetPort(APort: Integer);
    procedure SetProxyValid(AValid: Boolean);
 
    function GetUsername: String;
    function GetPassword: String;
    function GetServer: String;
    function GetPort: Integer;
    function GetProxyValid: Boolean;
  end;
使用此函数:
假设已经创建了一个ClientSocket1(TclientSocket对象),它的IP和Port设置为代理服务器的IP和Port,那么就有下面的代码:
......
Var
Re:Integer;
Begin
Re:
= SetProxy(@(ClientSocket.Socket.SocketHandle)) ;   // 如果验证成功,那么就可以用返回的//socket进行相应的通讯
If Re = 0  then 
Begn
  ShowMessage(‘Sock5 is ok’);         
// 代理服务器就会有连接的数据流显示
End
Else begin
  ShowMessage(‘Sock5 is error’);
End;
End;
……
上面的例子如果设置代理成功,那么代理服务器就会有连接的数据流显示。表示与代理服务器有数据交换,如果没有成功则务数据流显示。
 
 
                                                               李孟岩
                                                                      mengyan_yl@sohu.com
                                                                                    2005-07-05
新手避坑指南:用COMSOL Multiphysics仿真气体放电(汤逊vs.流注) 本文详细介绍了使用COMSOL Multiphysics仿真气体放电的实战指南,涵盖汤逊理论和流注模型的实现方法。通过对比两种放电模型的关键参数和物理场配置,帮助新手避免常见错误,准确预测气体击穿过程。文章还提供了工程应用案例,如高压绝缘子设计优化,展示了仿真技术在电力设备绝缘设计中的实际价值。 阅读详情

相关推荐

PVE 9.0 保姆级安装及优化教程(换源、网络配置、远程唤醒等)【基础篇】

最近,Proxmox VE 推出了基于 Debian 13 的 9.0 版本。正巧我手头有一台闲置的老电脑,与其闲置,不如装上 PVE,让它化身 All in One,继续发挥它的余热。G4560 算是一颗 NAS 神 U,十几元的售价就能有双核四线程,比起什么 J1900 不知道强到哪里去了,尽管定位上是奔腾处理器,但性能甚至能和同代的酷睿 i3-7100 掰掰手腕,并且它还自带 HD 610 的核显,对于解码的支持也还不错。

zc_mk的博客 7511

Socks5工作原理与搭建

Socks5协议是一款广泛使用的代理协议,它在使用TCP/IP协议通讯的客户端和服务器之间扮演一个中介角色,使得内部网中的客户端变得能够访问Internet网中的服务器,或者使C/S(Client和Server)之间的通讯更加安全。SOCKS5 代理服务器通过将客户端发来的请求转发给真正的目标服务器, 模拟了一个客户端请求操作。

顺其自然~专栏 4307

深入解析路科验证V0实验lab1:SV接口与时钟块实战

本文深入解析了路科验证V0实验Lab1的核心内容,重点阐述了SystemVerilog接口与时钟块在验证环境搭建中的关键作用。通过拆解router_io接口设计、时钟块同步机制及程序块封装,详细讲解了如何构建稳定可靠的验证通信基础,并提供了复位时序分析与常见调试技巧,为后续复杂验证打下坚实基础。

peach的博客 430

socks5学习

------------本文仅用于学习记录使用。

abcdefglouy的博客 1564

RDMA学习笔记-IB五层网络协议和报文结构

Reference InfiniBand Architecture Specification Volume 1, Release 1.3 文章目录IBA 网络协议分层1.链路层1.1 LRH1.2 ICRC1.3 VCRC2.网络层(GRH)3.传输层3.1 BTH3.2 extended transport header4. 报文结构4.1 send request4.2 RDMA Write request4.3 RDMA Read request4.4 ACK4.5 Atomic operatio

u014114310的博客 9472

数字孪生驱动的城市地下管网智能运维与应急处置决策支持系统

上海市城市数字化中心的数据实践显示,通过关联分析管网材质与故障率的关系,将铸铁管更换周期从15年优化至8年(李敏,2021)。环境效益方面,上海市通过优化管网运行参数,年减少碳排放1.8万吨,相当于种植36万棵乔木。数字孪生与物理设备的双向交互采用OPC UA协议实现,某次天津管网渗漏事件中,系统通过实时数据反馈,指导现场人员调整注浆方案,将修复时间从48小时压缩至16小时。虚拟指挥沙盘支持多视角协同,深圳水务系统的实践表明,通过AR可视化技术,跨部门会议效率提升60%,方案决策时间缩短40%。

2501_92431686的博客 1426

socket5代理简单使用

socket是什么 有两个程序,通过一个双向的通信连接实现数据交换,这个连接的一端就是一个soccet,也叫【套接字】;socket包括IP+端口,一个连接至少需要两个socket,因为连接的一端就是一个socket。 一个应用程序通过一个socket和其他应用程序建立连接; socket用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Intern...

JOJOY的博客 3万+

别再到处找了!GWAS数据下载保姆级指南:从IEU、FinnGen到UK Biobank一站搞定

本文提供GWAS数据下载的全面指南,涵盖IEU OpenGWAS、FinnGen、UK Biobank等五大核心数据库的获取策略。从数据库选型到实战操作,详细解析数据搜索、下载、预处理全流程,帮助科研人员高效获取GWAS数据,特别适合初学者快速上手。

weixin_42523543的博客 1584

UDP下的SOCK5代理实现

Author:zfive5(zhaozidong) Email :zfive5@yahoo.com.cn     前些时间,以前同事叫我帮忙写一个upd下的sock5代理,由于一些原因 没有帮成他的忙,我在这里再次对他说抱歉! 关于sock5代理的包文和数据 格式可以参考以下url中的内容:   http://www.vckbase.net/document/viewdoc/?id=85

ZFIVE5 1万+

XPe开发初体验(一)XPe概述

XP Embedded是微软Windows Embedded产品线中非常重要的一环,不过比起大名鼎鼎的Windows Embedded CE,XPe显得过于低调了。在接下来的一段时间里,我希望能够用六篇的篇幅来描述一下XPe的整个开发过程。这个系列文章主要是针对有Windows编程经验,但是没有嵌入式开发经验的开发者,提供一些概念和开发过程的初步介绍。XP Embedded是一个基于Windo

aawolf = new Mobile.MVP 1万+

数学建模学习(78):多输入多输出回归预测模型(结合XGBoost实现)

多输入多输出回归预测问题求解

全栈川川 8131

SOCK5代理服务的设计与实现

对于服务器而言,SOCK5协议的流程可用四个步骤解释: 协商 > 验证 > 接收请求 > 转发数据 SOCK5在RFC1928及RFC1929中有详细说明,RFC1928描述了SOCK5的“协商、接收请求”,RFC1929描述了SOCK5的“验证”过程。 对于上面的四个步骤,可简要地概述如下(以客户端对过代理connect远程主机为例): 1、 在SOCK5的协商过程中,客户端向服

caschaoxin的专栏 2174

SAP FICO 内部往来对账功能开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

SAP FICO 内部往来对账功能开发说明书(包括开发源代码、测试样例、FS)

我好像病了的博客 1224

3proxy+nginx实现sock5爬虫代理

sock5实现单一代理入口,通过多IP随机出访,适用于各种爬虫、反防刷,节前最后一篇文章,废话少说,走起!!!软件下载cd/usr/local/src wget"http://3proxy.ru/0.7.1.1/3proxy-0.7.1.1.tgz" wget"http://nginx.org/download/nginx-1.4.4.tar.gz" wget"htt...

weixin_33871366的博客 1165

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

sock代理服务原理(TCP穿透)

原文转自:http://www.cppblog.com/zuhd/archive/2010/06/08/117366.htmlsock代理分为sock4代理和 sock5代理。sock4支持TCP(事实仅支持TCP),无需用户名、密码验证;sock5支持TCP和UDP,根据代理服务器设置是否需要用户名、密码认证。TCP和UDP代理工作原理产不多,UDP代理网上多的是,google一下即可。这里只讲T

WHACKW的专栏 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

VB.Net2010 下的sock5代理实现

文章转载自 【http://blog.youkuaiyun.com/wuxing1129/article/details/4514650】 Imports System.Net Imports System.Net.Sockets Imports System.Text Public Class SockProxy Private m_RequireAuthorize As Boolean

gboxtop的专栏 1668

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

使用sock5代理连接tcp

#ifndef EMS_PROXY_H #define EMS_PROXY_H #pragma once #include #include #include using namespace std; /* sock代理工作原理大致如下: 1。[需要代理方]向服务器发出请求信息; 2。[代理方]应答; 3。[需要代理方]接到应答后发送向[代理方]发

XiaoWhy的专栏 1万+

Java实现sock5代理服务器

入职练手socks5代理服务器,过程总结一下。 1.下载火狐浏览器,设定代理为socks5代理,地址为127.0.0.1:1080。 2.socks5协议1928,中文版,原版,认真阅读 3.按照协议通过Java开发代理服务器。 4.代码在git上,https://github.com/Neal6/SimpleSocketProxy.git 5.说明:简略版,认证方式是默认的无认证,日志...

weixin_30878361的博客 1770

sock5 UDP代理通信及dante-1.4.0 实现篇

1:数据通信框图 上面是数据的流向,是双向的。此处主要是PC的数据进过router设备,之后到达proxy server,由proxy server转发之后到达UDPserver端。特定PC(特定IP及port)的数据进行WLAN设备的sock5客服端处理,直接将数据发送给UDP server。其中对于PC来说不用做任何的处理(sock5相关的协议),在此router设备完成了与so

OpenWrt/WLAN/驱动/Android/嵌入式开发总结 1万+

socket穿透代理代码(C++版)

写代码经常会遇到socket要通过代理连接服务器的情况,代理类型通畅有三种:HTTP、SOCK4和SOCK5,通过学习和网上参考相关代码,写了个代理类来实现该功能,贴出来与大家共享 才贴出来两天,刚在百度一搜竟然发现已被一字不改的转载到好几个网站去了,连转载的字样都没有,不反对转载分享,可能否注明出处? 头文件 [cpp] view p

tongjing524的专栏 783

<转 >socket穿透代理代码(C++版)

本文转自 http://blog.youkuaiyun.com/bodybo/article/details/7274865 写代码经常会遇到socket要通过代理连接服务器的情况,代理类型通畅有三种:HTTP、SOCK4和SOCK5,通过学习和网上参考相关代码,写了个代理类来实现该功能,贴出来与大家共享   才贴出来两天,刚在百度一搜竟然发现已被一字不改的转载到好几个网站去了,连转载的字样都没有,不反...

weixin_34029680的博客 249

XShell配置Socket5代理

打开代理设置面板,点击:view -> Tunneling Pane 在弹出的窗口选择Forwarding Rules, 在空白处右键:add。在弹出的Forwarding Rule,Type选择“Dynamic(SOCK54/5”;Listen Port使用默认的1080。 这时浏览器就可以使用代理上网了。以FireFox为例,选项—高级—网络—设置—手动配置代理—Socks主机写127.0

十年磨一剑,霜刃未曾试! 7297
上一篇: 用DLL方式封装MDI子窗体。
下一篇: 用POWERDESIGNER生成ACCESS2000类型数据库文件
myan18
博客等级 码龄25年 15粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值