powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / простейший Proxy
10 сообщений из 10, страница 1 из 1
простейший Proxy
    #33018582
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо. Никаких кэширований ничё не надо. Чё-то рыл-рыл, ничё не нашёл.
Одним экзэшником без настроек, только http
Ни у кого нет на примете. Видел, давно, но щас не могу найти, название не помню
...
Рейтинг: 0 / 0
простейший Proxy
    #33018725
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой shttp3.exe - могу на мыло кинуть, 100кб. Правда, shareware.
...
Рейтинг: 0 / 0
простейший Proxy
    #33018730
Фотография rrrrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой, виноват. Он не прокси. Он веб. Извиняюсь.
...
Рейтинг: 0 / 0
простейший Proxy
    #33019143
Yanis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://search.centre.ru/soft/0_Server_Tools/Proxy_Servers/
?
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
простейший Proxy
    #33019165
Шогал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
#define VERSION "v1.02"

//#include "windows.h"
#include "Winsock2.h"
#include "Winsvc.h"
#include "ws2tcpip.h"

#include "stdio.h"
#include "conio.h"
#pragma comment(lib, "Ws2_32.lib")
//#include "winsock2.h"
#define C_TIMEOUT  60 ;
#define SEND_TIMEOUT  3600 ;

#define MAGIC_WORD_LEN  42 
#define MAGIC_WORD "Grigoriev rulez! Other lecturers must die!"

int OUR_PORT =  800 ;
int ENEMY_PORT =  3128 ;
char ENEMY_ADDR[ 256 ] = "localhost";

SOCKET s;
int PROXYMODE =  0 ;
char ENEMY_IP[ 16 ];

int getaddr(char *name, char *ip){
  ADDRINFOA *addr;
  if(getaddrinfo(name, NULL, NULL, &addr) !=  0 ){
    return  0 ;
  }
  sprintf(ip, "%d.%d.%d.%d",
    (unsigned char)addr->ai_addr->sa_data[ 2 ],
    (unsigned char)addr->ai_addr->sa_data[ 3 ],    
    (unsigned char)addr->ai_addr->sa_data[ 4 ],    
    (unsigned char)addr->ai_addr->sa_data[ 5 ]);
  return  1 ;
} 

int streq(char *str1, char *str2){
  int i =  0 ;
  while(str2[i]){
    if(str1[i]!=str2[i]) return  0 ;
    i++;
  }
  return  1 ;
}

void parseheader(char *buff, char *addr, int *port, size_t *size){
  int mode =  0 ;
  size_t loc1 =  0 , loc2 =  0 ;
  size_t pos1 =  0 ;
  size_t i;
  *port =  80 ;
  for(i =  0 ; i < *size; i++){
    switch(mode){
      case( 0 ):
        if(buff[i] == ' '){
          mode++;
          loc1 = i;
        }
        break;
      case( 1 ):
        if(streq(&buff[i], "http://")){
          *port =  80 ;
          mode++;
          i+= 6 ;
        }
        break;
      case( 2 ):
        if(buff[i] == ':'){
          *port =  0 ;
          mode++;
          break;
        }
        if(buff[i] == '/'){
          mode =  255 ;
          loc2 = i;
          break;
        }
        addr[pos1++] = buff[i];
        break;
      case( 3 ):
        if(buff[i] == '/'){
          mode =  255 ;
          loc2 = i;
          break;
        }
        *port = (*port)* 10  + buff[i] - '0';
    }
    if(mode ==  255 ) break;
  }
  addr[pos1] =  0 ;
  if(loc1 && loc2){
    MoveMemory(&buff[loc1+ 1 ], &buff[loc2], (*size)-loc2+ 1 );
    size -= (loc2-loc1);
  }
}

unsigned long int ids =  0 ;

void socktread(){
  WSANETWORKEVENTS netevents;
  SOCKET clnt, srv;
  size_t Size;
  SOCKADDR_IN addrs;
  WSAEVENT hEventC, hEventS, hEventWait;
  int connected;
  char desccl[ 256 ], descsv[ 256 ];
  char buff[ 65537 ];
  int _ENEMY_PORT = ENEMY_PORT;
  char _ENEMY_ADDR[ 256 ];
  char _ENEMY_IP[ 256 ];
  unsigned long int id;
  u_long bmode;
  TIMEVAL timeout;
  fd_set writefds;
  int temp;
  
  ids++;
  id = ids;

  sprintf(_ENEMY_ADDR, "%s", ENEMY_ADDR);
  sprintf(_ENEMY_IP, "%s", ENEMY_IP);
  Size = sizeof(addrs);
  clnt = accept(s, (SOCKADDR *)&addrs, (int *)&Size);
  if(!clnt) return;

  sprintf(desccl,"%s:%d", inet_ntoa(addrs.sin_addr), ntohs(addrs.sin_port));
  printf("[#%d] %s connected...\n", id, desccl);
  hEventC = WSACreateEvent();
  hEventS = WSACreateEvent();
  hEventWait = WSACreateEvent();
  WSAEventSelect(clnt, hEventC, FD_READ | FD_CLOSE);
  connected =  0 ;

  for(;;){
    // Client activity
    WSAEnumNetworkEvents(clnt, hEventC, &netevents);
    if(netevents.lNetworkEvents & FD_READ){
      Size = recv(clnt, buff, sizeof(buff)- 1 ,  0 );
      buff[Size] =  0 ;
      if(!connected){
        if((Size == MAGIC_WORD_LEN) && !strcmp(buff, MAGIC_WORD)){
          printf("[#%d] %s closed proxy server...\n", id, desccl);
          send(clnt, "200 Close command OK",  21 ,  0 );
          exit( 0 );
        }
        if(!PROXYMODE){
          parseheader(buff, _ENEMY_ADDR, &_ENEMY_PORT, &Size);
          if(!getaddr(_ENEMY_ADDR, _ENEMY_IP)){
            sprintf(buff, "Server \"%s\" not found!", _ENEMY_ADDR);
            printf("[#%d] %s disconnected [%s not found]...\n", id, desccl, _ENEMY_ADDR);
            send(clnt, buff, (int)strlen(buff),  0 );
            closesocket(clnt);
            WSAEventSelect(clnt, hEventC,  0 );
            fflush(stdout);
            return;
          }
        }
        addrs.sin_addr.S_un.S_addr = inet_addr(_ENEMY_IP);
        addrs.sin_port = htons(_ENEMY_PORT);
        addrs.sin_family = PF_INET;
        sprintf(descsv, "%s:%d", _ENEMY_ADDR, _ENEMY_PORT);
        srv = socket(PF_INET,SOCK_STREAM, 0 );
        bmode =  1 ;
        ioctlsocket(srv, FIONBIO, &bmode);
        connect(srv, (SOCKADDR *)&addrs, sizeof(addrs));
        FD_SET(srv, &writefds);
        timeout.tv_sec = C_TIMEOUT;
        timeout.tv_usec =  0 ;
        select( 0 , NULL, &writefds, NULL, &timeout);
        connected = FD_ISSET(srv, &writefds);
        FD_ZERO(&writefds);
        if(!connected){
          sprintf(buff, "Server \"%s:%d\" connection timeout!", _ENEMY_ADDR, _ENEMY_PORT);
          printf("[#%d] %s disconnected [%s:%d connection timeout]...\n", id, desccl, _ENEMY_ADDR, _ENEMY_PORT);
          send(clnt, buff, (int)strlen(buff),  0 );
          closesocket(srv);
          closesocket(clnt);
          WSAEventSelect(clnt, hEventC,  0 );
          fflush(stdout);
          return;
        } else {
          WSAEventSelect(srv, hEventS, FD_READ | FD_CLOSE);
        }
      }
      printf("[#%d] %s->%s ===> (%d bytes)\n", id, desccl, descsv, Size);
      send(srv,buff,(int)Size, 0 );
      FD_SET(srv, &writefds);
      timeout.tv_sec = SEND_TIMEOUT;
      timeout.tv_usec =  0 ;
      select( 0 , NULL, &writefds, NULL, &timeout);
      FD_ZERO(&writefds);
    }
    if(netevents.lNetworkEvents & FD_CLOSE){
      closesocket(srv);
      WSAEventSelect(clnt, hEventC,  0 );
      WSAEventSelect(srv, hEventS,  0 );
      printf("[#%d] %s disconnected [Client]...\n", id, desccl);
      fflush(stdout);
      return;
    }

    // Enemy server activity
    if(connected){
      WSAEnumNetworkEvents(srv, hEventS, &netevents);
      if(netevents.lNetworkEvents & FD_READ){
        Size = recv(srv, buff, sizeof(buff)- 1 ,  0 );
        buff[Size] =  0 ;
        printf("[#%d] %s<-%s <=== (%d bytes)\n", id, desccl, descsv, Size);
        temp = send(clnt,buff,(size_t)Size, 0 );
        sprintf(buff,"ERROR: sent %d of %d",temp, Size);
        FD_SET(clnt, &writefds);
        timeout.tv_sec = SEND_TIMEOUT;
        timeout.tv_usec =  0 ;
        select( 0 , NULL, &writefds, NULL, &timeout);
        FD_ZERO(&writefds);
      }
      if(netevents.lNetworkEvents & FD_CLOSE){
        WSAEventSelect(srv, hEventS,  0 );
        WSAEventSelect(clnt, hEventC,  0 );
        closesocket(clnt);
        printf("[#%d] %s disconnected [Server]...\n", id, desccl);
        fflush(stdout);
        return;
      }
    }
    Sleep( 1 );
  }
}

int main(int argc, char *argv[]){
  SOCKADDR_IN saddr;
  WSADATA wsa;
  WSAEVENT hEvent;
  WSANETWORKEVENTS netevents;

  if(argc >=  2 ) OUR_PORT = atoi(argv[ 1 ]);
  if(argc >=  3 ){
    PROXYMODE =  1 ;
    sprintf(ENEMY_ADDR, "%s", argv[ 2 ]);
    if(argc >=  4 ) ENEMY_PORT = atoi(argv[ 3 ]);
  }
  WSAStartup(0x101, &wsa);
  printf("Anti-Kleus [%s] proxy server ready...\n", VERSION);
  if(PROXYMODE)
    if(!getaddr(ENEMY_ADDR, ENEMY_IP)){
      printf("Master server not found...");
      return  1 ;
    }
  //printf("%s ",enemy_addr);
  s = socket(PF_INET, SOCK_STREAM,  0 );
  saddr.sin_family = PF_INET;
  saddr.sin_addr.S_un.S_addr = INADDR_ANY;
  saddr.sin_port = htons(OUR_PORT);
  if(bind(s, (SOCKADDR *)&saddr, sizeof(saddr))){
    printf("Bind port %d error...\n", OUR_PORT);
    return  2 ;
  }
  listen(s,  255 );
  printf("Listening on port %d\n", OUR_PORT);
  hEvent = WSACreateEvent();
  WSAEventSelect(s, hEvent, FD_ACCEPT);
  if(PROXYMODE){
    printf("Redirection set to %s:%d\n", ENEMY_ADDR, ENEMY_PORT);
  }
  printf("\n");
  for(;;){
    if(WSAEnumNetworkEvents(s, hEvent, &netevents) ==  0 )
      if(netevents.lNetworkEvents & FD_ACCEPT)
        CreateThread(NULL,  0 , (LPTHREAD_START_ROUTINE)&socktread, NULL,  0 , NULL);
    fflush(stdout);
    Sleep( 1 );
  }
}
Писал сам, некоторые баги есть, но их легко исправить.
...
Рейтинг: 0 / 0
простейший Proxy
    #33019226
Фотография lissyara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Шогал :)
Вот бы ещё знать, что с этим делать.... :)
2 Yanis
EasyProxyServer - она называлась. Вспомнил. Спасибо!
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
простейший Proxy
    #33038483
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Шогал

лучше б exe собрал бы...
...
Рейтинг: 0 / 0
простейший Proxy
    #33044199
Шогал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собрал, закинул сюда:
http://tsbunker.net.ru/trash/proxy.exe
Параметры запуска: первым параметром порт (default=800), вторым удаленный прокси (если хочешь передавать запросы через него) (default=localhost), третим порт на удаленном прокси (default=3128).
...
Рейтинг: 0 / 0
простейший Proxy
    #33044792
Фотография RatTail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШогалСобрал, закинул сюда:
http://tsbunker.net.ru/trash/proxy.exe
Параметры запуска: первым параметром порт (default=800), вторым удаленный прокси (если хочешь передавать запросы через него) (default=localhost), третим порт на удаленном прокси (default=3128).
Нормально! Мой юзверь подмены прокси на лету не заметил. Ж)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
E:\>proxy  1111 
Anti-Kleus [v1. 02 ] proxy server ready...
Listening on port  1111 

[# 1 ]  192 . 168 . 0 . 20 : 1376  connected...
[# 1 ]  192 . 168 . 0 . 20 : 1376 ->www.******.com: 80  ===> ( 384  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 4380  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1460  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 2920  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376 <-www.******.com: 80  <=== ( 1942  bytes)
[# 1 ]  192 . 168 . 0 . 20 : 1376  disconnected [Server]...
...
Рейтинг: 0 / 0
простейший Proxy
    #33044909
Фотография RatTail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШогалСобрал, закинул сюда:
http://tsbunker.net.ru/trash/proxy.exe
Параметры запуска: первым параметром порт (default=800), вторым удаленный прокси (если хочешь передавать запросы через него) (default=localhost), третим порт на удаленном прокси (default=3128).
Будь другом, если не в лом, кинь сюда исходники конкретно этого экзешника.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / простейший Proxy
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]