linux平台socks5代理Socks5 proxy for Linux platformA few days ago, MSN couldn't get up. I thought the company hadfirewall restrictions. So this time last year wrote a proxyprogram changed to change, use it out. It turned out that MSNwas because of Microsoft' s problems and despised ah. . . . . .Because the writing is more urgent, this only supports TCP agent,UDP I did not write, because MSN can not use. This code can bemodified and distributed at will, but you'd better give me one.This is the head file:
///////////////////////////////////////////////////////////
////////////////////////////////////////////////////
/ / Socks5 proxy header file defines the related data packetstructure
/ / version 0. 1, author Yun Shu
//January 9, 2007 at 1 : 15 in the morning, GF home for 11 days.In January 25, 2008 this year, GF/ changes, always beside me,haha
/ /
/ / reference:
/ / http://www.rfc-editor.org/rfc/rfc1928. txt
/ / http://www.rfc-editor.org/rfc/rfc1929. txt
///////////////////////////////////////////////////////////
////////////////////////////////////////////////////
#ifndef SOCKS5_H
#def ine SOCKS5_H
#def ine VERSION 0x05
#def ine CONNECT 0x01
#def ine IPV4 0x01
#define DOMAIN 0x03
#def ine IPV6 0x04
Typedef struct_method_select_response // negotiation methodof server response
{
Char version; / / server supported versions of Socks, 0x04 or0x05
Char select_method; / / server selection method, 0x00 foranonymous 0x02 password authentication
} METHOD_S ELECT_RES PONSE;
Typedef struct _method_select_request / / server requestconsultation method
{
Char version; / / client support version of 0x04 or 0x05Char number_methods; / / the number of client support methodChar methods[255] ; / / type methods supported by the client,up to 255, 0x00 anonymous 0x02 password authentication} METHOD_S ELECT_REQUES T;
Typedef struct_AUTH_RESPONSE//user password authenticationserver response
{
Char version; / / version, here is 0x01 constant
Char result; / / server authentication results, 0x00 issuccessful, others are failed
} AU TH_RES PON SE;
Typedef struct_AUTH_REQUEST/ /user password authenticationclient request
{
Char version; / / version, here is 0x01 constant
Char name_len; / / the third field name length, a byte, thelength is 0xff
Char name[255] ; / / username
Char pwd_len; / / the fourth field length, a byte, the lengthis 0xff
Char pwd[255] ; / / password
} AUTH_REQUES T;
Typedef struct_SOCKS5_RESPONSE/ / connect host, Socks proxyserver response
{
Char version; / / server supported versions of Socks, 0x04 or0x05
Char reply; //proxy server to connect to host the 0x00 successChar reserved; / / keep constant, 0x00
Char address_type; //Socks proxy server address binding type,IP V4 0x01, IP V6 0x04, the domain name is 0x03
Char address_port[1] ; // if address_type for the domain name,
where the first byte length for the domain name, followed bythe domain name itself, 0 characters at the end, after thedomain name for Socks proxy server port binding
}SOCKS5_RESPONSE;
Typedef struct _SOCKS5_REQUEST / / client request to connectto host
{
Char version;
/ / client support version of Socks, 0x04 or 0x05
Char CMD; //CONNECT cl ient command, 0x01, BIND 0x02, UDP 0x03,is 0x01
Char reserved; / / keep constant, 0x00
Char address_type; / / client requests the real host addresstype, IP V4 0x00, IP V6 0x04, char domain name is 0x03address_port[1] ; // if address_type for the domain name, herethe first byte length of the domain, followed by the domain nameitself, 0 characters at the end, the domain name after the realhost binding port
}SOCKS 5_REQUE ST;
#endif
Here comes the main program:
///////////////////////////////////////////////////////////
////////////////////////////////////////////////////
/ / Socks5 procedures, only support TCP proxy
/ / version 0. 1, author Yun Shu
//January 9, 2007 at 1 : 15 in the morning, GF home for 11 days.In January 25, 2008 this year, GF/ changes, always beside me,haha
/ /
/ / reference:
/ / http://www.rfc-editor.org/rfc/rfc1928. txt
/ / http://www.rfc-editor.org/rfc/rfc1929. txt
/ / compiler:
-o Socks5 -O2 Socks5.c -lpthread / GCC (RedHat AS5)
///////////////////////////////////////////////////////////
////////////////////////////////////////////////////
#include <stdio.h>
#include <netinet/in.h>#include <netdb.h>
#include <sys/time.h>#include <sys/types.h>#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
#include <pthread.h>#include <errno.h>
#include <string.h>
#include <sys/socket.h>#include <arpa/inet.h>#include "Socks5.h""#define MAX_USER 10
#define BUFF_SIZE 1024
#def ine AUTH_CODE 0x02
#def ine TIME_OUT 6000000
#def ine USER_NAME "Yunshu""
#def ine PASS_WORD "ph4nt0m""
Auth method / / Select, return 0 if success, -1 if failedInt SelectMethod (int sock)
{
Char recv_buffer[BUFF_SIZE] = {0} ;
Char reply_buffer[2] = {0} ;
METHOD_SELECT_REQUEST *me tho d_reques t;
METHOD_SELECT_RESPONSE *method_response;
R ecv / / METHOD_SELECT_REQUE ST
Int, RET = recv (sock, recv_buffer, BUFF_SIZE, 0) ;
If (RET 0)
{
PERROR ("recv error") ;
Close (sock) ;
Return -1;
}
//printf (SelectMethod: , recv,%d, bytes\n, RET) ;
If client request a wrong version / or a wrong number_methodMethod_request = (METHOD_SELECT_REQUEST *) recv_buf fer;Method_response = (METHOD_SELECT_RESPONSE *) rep ly_buf fer;Method_response->version = VERSION;
Not Socks5 / / if
If ( (int) method_request->version = = VERSION)
{
Method_response->select_method = 0xff;
Send (sock, method_response, s i zeof (METHOD_SELECT_RESPONSE) ,
0) ;
Close (sock) ;
Return -1;
继阿里云服务商推出轻量服务器后,腾讯云这两年对于轻量服务器的推广力度还是比较大的。实际上对于我们大部分网友用户来说,轻量服务器对于我们网站和一般的业务来说是绝对够用的。反而有些时候轻量服务器的带宽比CVM云服务器够大,配置也够好,更有是价格也便宜,所以对于初期的网站业务来说轻量服务器是够用的。这几天UCLOUD优刻得香港服务器稳定性不佳,于是有网友也在考虑搬迁到腾讯云服务器商家,对于轻量服务器官方...
halocloud怎么样?halocloud是一个于2019下半年建立的商家,主要提供日本软银VPS,广州移动VDS,株洲联通VDS,广州移动独立服务器,Halo邮局服务,Azure香港1000M带宽月抛机器等。日本软银vps,100M/200M/500M带宽,可看奈飞,香港azure1000M带宽,可以解锁奈飞等流媒体,有需要看奈飞的朋友可以入手!点击进入:halocloud官方网站地址日本vp...
阿里云(aliyun)在这个月又推出了一个金秋上云季活动,到9月30日前,每天两场秒杀活动,包括轻量应用服务器、云服务器、云数据库、短信包、存储包、CDN流量包等等产品,其中Aliyun轻量云服务器最低60元/年起,还可以99元续费3次!活动针对新用户和没有购买过他们的产品的老用户均可参与,每人限购1件。关于阿里云不用多说了,国内首屈一指的云服务器商家,无论建站还是学习都是相当靠谱的。活动地址:h...