Всем привет,вот я набросал локальный проксик,да только вот на мозиле он вроде норм работает,а когда с хрома захожу,то вообще не грузит ничего.
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, Ага, щас человек сядить будет тебя обучать кодить на с++ через скайп, экран показывая
Смотри обучалки на ютубах, книжки читай, и то толка будет больше