Всем привет,вот я набросал локальный проксик,да только вот на мозиле он вроде норм работает,а когда с хрома захожу,то вообще не грузит ничего. proxy.Мож,кто подскажет в чём трабла? proxy.h
Код
#include <iostream> #include <windows.h> using namespace std; #pragma comment(lib, "ws2_32.lib") #define Buf_Size 99990 #define ipLen 20 #define pReadSize 2000 typedef DWORD (WINAPI* ThreadFunc)(LPVOID); namespace NetWork { //CRITICAL_SECTION cs; bool SetClientSocket(SOCKET &x,LPSTR host,UINT port){ sockaddr_in addr; x = socket(AF_INET,SOCK_STREAM,0); if (x != SOCKET_ERROR){ cout<<"Client Socket is ok"<<endl; addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = inet_addr(host); if (!connect(x,(const sockaddr*)&addr,sizeof(addr))){ cout<<"Client is ready!"<<endl; return true; }else cout<<"Client is not ready!"<<endl; } return false; }
/** *Удаляет пробел и \ */ char* del_sb(char* str) { int N = strlen(str); char* res = (char*)malloc(N); ZeroMemory(res,N); int j = 0; for(int i=0; i<N; i++) if (str[i]!='/' && str[i]!=' ' && str[i]!='\\'){ res[j] = str[i]; j++; } return res; }
/* *Возвращает IP по домену */ char * GetHostByName(char* name) { if (strstr(name,"http://")!=NULL) name = name+7; char* P = del_sb(name); strcpy(name,P); free(P); WSADATA wdata; struct hostent *remoteHost; int result = WSAStartup(MAKEWORD(2,2), &wdata); remoteHost = gethostbyname(name); return inet_ntoa(*( struct in_addr*)remoteHost->h_addr_list[0]); }
/* *Получает пост запрос от браузера.Возвращает в параметрах IP и порт. */ void GetHostAndPort(IN char* refa, OUT char host[ipLen], OUT UINT &port) { if (!strlen(refa)) { memset(host,0,sizeof(host)); port = 0; return; } if ( strstr(refa,"GET") == refa || strstr(refa,"POST") == refa ) port = 80; else if ( strstr(refa,"CONNECT") == refa ) port = 443; char HOST[100] = {}; char* p1 = strstr(refa,"Host:"); if (p1 != NULL) p1+=5; else return; char* p2 = strstr(p1,"\r\n"); if (p2 == NULL) return; ZeroMemory(HOST,sizeof(HOST)); strncpy(HOST,p1,p2-p1); strcpy(HOST,GetHostByName(HOST)); strcpy(host,HOST); }
void SaveToFile(LPSTR fname,LPVOID buf,DWORD size) { HANDLE f = CreateFileA(fname,GENERIC_ALL,FILE_SHARE_WRITE,0,CREATE_ALWAYS,0,NULL); DWORD w = 0; WriteFile(f,buf,size,&w,NULL); CloseHandle(f); }
/* *Заменяет в стоке string все вхождения delimiter на replacement.Если нет delimiter *,то возвращает 0,иначе 1. */ int string_replace(char *string, const char *delimiter, const char *replacement) { if (strlen(delimiter) == 0 || strlen(replacement) == 0) return 0; int bret = 0; char *ret; int length_del, length_rep, i, j;
if (string == NULL || delimiter == NULL || replacement == NULL) return 0; length_del = strlen(delimiter); length_rep = strlen(replacement); i = 0; j = 0; while (string[i] != '\0') { if (!strncmp(&string[i], delimiter, length_del)) { i += length_del; j += length_rep; bret = 1; } else { i++; j++; } } if (!bret) return bret; ret = (char*) malloc(j+1); if (!ret) return 0; i = 0; j = 0; while (string[i] != '\0') { if (!strncmp(&string[i], delimiter, length_del)) { strncpy(&ret[j], replacement, length_rep); i += length_del; j += length_rep; } else { ret[j] = string[i]; i++; j++; } } ret[j] = '\0'; strcpy(string, ret); free(ret); return bret; }
/** *Возврашает строку с подставленным тегом. *вернёт true,если была произведёна подстановка кода после указанного тега. *Результат будет указатель на память в Result на новый код. *Возвратит true - если была выделена память с новой строкой. *Внимание!!! Тогда Не Забыть освободить память!!! *false возвратит,если не было найдено тега,после которого нужно подставить код. *Тогда Result будет указывать на исходный str. **/ bool WebInject(char *str, int len_Str, char *teg, char *code, OUT char *&Result) { int NewSize = strlen(str) + strlen(code)+1; Result = str; char *NewStr;
Разницы практически нет. Кстати, на счёт кода. Скомпилил я его в 2008 студии. И на последней Опере у меня тоже глухо... ( Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Вторник, 14.01.2014, 15:33
не против если в месте попытаемся что не будь создать ? напиши в личку свою аську или скайп или где ты есть за одно я научусь чему не будь ну и ты свои знания закрепишь
Добавлено (14.01.2014, 16:25) --------------------------------------------- не против если в месте попытаемся что не будь создать ? напиши в личку свою аську или скайп или где ты есть за одно я научусь чему не будь ну и ты свои знания закрепишь
Antsols, Ага, щас человек сядить будет тебя обучать кодить на с++ через скайп, экран показывая Смотри обучалки на ютубах, книжки читай, и то толка будет больше