Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   работа с сокетом через прокси в С/С++ (https://forum.antichat.xyz/showthread.php?t=65387)

KSoniX 25.03.2008 15:44

работа с сокетом через прокси в С/С++
 
вот мой код мне надо чтобы он работал через прокси и чтобы задавалось имя пользователя и его пасс и он делал коннект через прокси
Код:

///.........................................................
int main()
{
///.........................................................
WSADATA wsaData;
    WSAStartup(MAKEWORD(2,0),&wsaData);
    SOCKET    sClient;
    char    szBuffer[1024];
    int    ret;
    struct sockaddr_in server;
    struct hostent    *host = NULL;
    char szServerName[1024];
   
    strcpy(szServerName, "192.168.0.1");

    // Создание сокета
    sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (sClient == INVALID_SOCKET)
    {
       
        return 1;
    }
    // Заполнение структуры с адресом сервера и номером порта
    server.sin_family = AF_INET;
    server.sin_port = htons(80);
    server.sin_addr.s_addr = inet_addr(szServerName);

    // Если указано имя, то перевод символьного адреса сервера в IP
    if (server.sin_addr.s_addr == INADDR_NONE)
    {
        host = gethostbyname(szServerName);
        if (host == NULL)
        {
           
            return 1;
        }
        CopyMemory(&server.sin_addr, host->h_addr_list[0],
            host->h_length);
    }
    // Соединение с сервером
    if (connect(sClient, (struct sockaddr *)&server,
        sizeof(server)) == SOCKET_ERROR)
    {
       
        return 1;
    }
//................................................................
}

//................................................................

если можна по быстрей PLS

krypt3r 25.03.2008 16:01

Программа-то что делает? Запрашивает некий Url? Если так, то коннект делай к проксе, а в гет/пост укажи урл к запрашиваемому сайту.

KSoniX 25.03.2008 16:15

krypt3r клиент подключается к серверу через прокси и он должн зарегится в прокси сервере

krypt3r 25.03.2008 16:28

Авторизация на прокси происходит внутри GET/POST-запроса в поле
Код:

Proxy-Authorization: Basic bG9naW46cGFzcw==\r\n
где bG9naW46cGFzcw== - это логин и пасс, разделенные двоеточием и закодированные в Base64

KSoniX 25.03.2008 16:37

krypt3r куда я его поставлю в моем случае
у меня ест имя пользователя и его пасс но как его задавать с помошью winsock ?
:confused:

KSoniX 25.03.2008 18:56

помогите Pls или что ни кто не знает! :)

x0man 26.03.2008 00:54

Думаю стоит почтитать Rfc по Http аунтефикации...

sn0w 26.03.2008 15:17

используй WinInet API, с сокетами геморно и бессмысленно

zythar 26.03.2008 15:25

вот что впринципе мона сделать. сначала приконектиться к проксе через браузер и просмотреть хидеры. потом скопипастить хидеры которые ты посылаешь в твою программу. тобишь написать что то типа этого
Код:

char headers[] = "хидеры которые посылаешь";
write(s, headers, sizeof headers);


KSoniX 26.03.2008 17:13

всем спасибо всё получилось


Время: 05:50