Программа на делфи. Как написать переадресовку пакетов на другой домен? Например чтобы выходить в интернет на какой-то сайт через 127.0.0.1 Что-то вроде прокси... кто-то может помочь?
Открываешь порт у себя на компе и начинаешь прослушивать его. Дальше, все данные, которые пришли от подключившегося клиента, отправляешь на требуемый сервер, и наоборот.
Пишешь сервер на любом порту и в настройках обозревателя ставишь его как HTTP proxy вот простой пример написал на Си Code: #include <stdio.h> #include <winsock2.h> // Wincosk2.h должен быть раньше windows! #pragma comment(lib, "ws2_32.lib") SOCKET tcp_server(USHORT port,int max_client) { SOCKET sock=INVALID_SOCKET; struct sockaddr_in addr; sock = socket(AF_INET, SOCK_STREAM, 0); if(sock!=INVALID_SOCKET) { addr.sin_family = AF_INET; addr.sin_port = htons(port); // не забываем о сетевом порядке!!! addr.sin_addr.s_addr = 0; // сервер принимает подключения на все свои IP адреса if (!(bind(sock, (struct sockaddr *)&addr, sizeof(addr)))) { if (listen(sock, max_client)) { closesocket(sock); sock=INVALID_SOCKET; } } else{ closesocket(sock); sock=INVALID_SOCKET; } } return sock; } int main(int argc, char* argv[]) { char buff[1024]; WSAStartup(0x202,(LPWSADATA)buff); SOCKET listen_sock=tcp_server(1235,1); if(listen_sock==INVALID_SOCKET) return 1; SOCKET client_socket; // сокет для клиента struct sockaddr_in client_addr; // адрес клиента (заполняется системой) int client_addr_size = sizeof(client_addr); while ((client_socket = accept(listen_sock, (struct sockaddr *)&client_addr, &client_addr_size))) { // самый простой вариант создать поток, либо завести массив клиентов и проверять их через select // но это просто пример поэтому выведем на экран че пришло int len=recv(client_socket,buff,sizeof(buff),MSG_PEEK); len=recv(client_socket,buff,len,0); if(len>0) { printf("%s\n--\n",buff); } } WSACleanup(); return 0; } Основные отличия в запросе это полный адрес иногда с портом для подключения поэтому тебе придется разобрать заголовок чтобы узнать куда подключиться и удалить лишнее из запроса. После того как ты из заголовка узнал что нужно подключится к forum.antichat.ru (Host) и отправить GET запрос сюда /, собственно создаешь новый сокет подключаешься и делаешь запрос (подробно о том как ГРАМОТНО отправлять GET и ГРАМОТНО получать ответ я описывал в своем болге), а все данные которые тебе пришли в ответ отправляешь обратно клиенту. Конечно везде есть куча нюансов, например Connection: keep-alive или там https. Сам мучайся ))))
мдэ... обрабатывай полученное к такому виду Code: GET / HTTP/1.0 User-Agent: Opera/9.80 (Windows NT 6.1; U; MRA 5.7 (build 03796); ru) Presto/2.7.62 Version/11.00 Host: forum.antichat.ru Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1 Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0