WinINet через socks

Тема в разделе "WASM.WIN32", создана пользователем JamesB, 3 мар 2008.

  1. JamesB

    JamesB New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2008
    Сообщения:
    66
    Вообщем в InternetOpenA передается lpszProxy, что, как показал гугл (а не документация, т.к. там этого нет) должно являтся такой строкой:
    http://ip:port - для хттп прокси
    socks=ip:port - для сокса.

    если задать неправильный формат, то прокси игнорируется.
    HTTP работает отлично, запросы идут через прокси.
    А вот сокс - косяк. Отправляется (смотрел бряками на send,recv) какая-то хрень, на что сокс сервер отвечает байтами
    0x04 0x90. После этого сразу WSA E CONN REFUSED.
    IE через этот же сокс работает отлично.
    Подскажите, как юзать ВинИнет через сокс?
    Горит!
     
  2. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Код (Text):
    1. InternetOpenProxy proc
    2.      local hOpen:dword
    3.      local hOpenUrl:dword
    4.      local buffer[4096]:byte
    5.      local bytewrite:dword
    6.  
    7.        invoke InternetOpen,$CTA0("proxy-test"),3,$CTA0("127.0.0.1:8080"),0,0
    8.         .if eax != 0
    9.            mov hOpen,eax
    10.            invoke InternetOpenUrl,hOpen,$CTA0("http://www.ya.ru"),0,0,0,0
    11.             .if eax != 0
    12.                mov hOpenUrl,eax
    13.             @@:
    14.                mov bytewrite,0
    15.                invoke RtlZeroMemory,addr buffer,sizeof buffer
    16.                invoke InternetReadFile,hOpenUrl,addr buffer,sizeof buffer,addr bytewrite
    17.                 .if eax != 0 && bytewrite != 0
    18.                    invoke MessageBox,0,addr buffer,$CTA0("proxy - работает"),0
    19.                    jmp @B
    20.                 .endif
    21.                invoke InternetCloseHandle,hOpenUrl
    22.             .endif
    23.            invoke InternetCloseHandle,hOpen
    24.         .endif
    25.        ret
    26. InternetOpenProxy endp
    Код (Text):
    1. InternetOpenSocks proc
    2.      local hOpen:dword
    3.      local hRequest:dword
    4.      local hConnect:dword
    5.      local buffer[4096]:byte
    6.      local bytewrite:dword
    7.  
    8.        invoke InternetOpen,$CTA0("socks4-test"),3,$CTA0("socks=127.0.0.1:1080"),0,0
    9.         .if eax != 0
    10.            mov hOpen,eax
    11.            invoke InternetConnect,hOpen,$CTA0("ya.ru"),INTERNET_DEFAULT_HTTP_PORT,0,0,INTERNET_SERVICE_HTTP,0,0
    12.             .if eax != 0
    13.                mov hConnect,eax
    14.                invoke HttpOpenRequest,hConnect,$CTA0("GET"),$CTA0("/"),$CTA0("HTTP/1.1"),0,0,0,1
    15.                 .if eax != 0
    16.                    mov hRequest,eax
    17.                    invoke HttpSendRequest,hRequest,0,0,0,0
    18.                     .if eax == 1
    19.                     @@:
    20.                        mov bytewrite,0
    21.                        invoke RtlZeroMemory,addr buffer,sizeof buffer
    22.                        invoke InternetReadFile,hRequest,addr buffer,sizeof buffer,addr bytewrite
    23.                         .if eax != 0 && bytewrite != 0
    24.                            invoke MessageBox,0,addr buffer,$CTA0("socks4 - работает"),0
    25.                            jmp @B
    26.                         .endif
    27.                     .endif
    28.                    invoke InternetCloseHandle,hRequest
    29.                 .endif
    30.             .endif
    31.            invoke InternetCloseHandle,hOpen
    32.         .endif
    33.        ret
    34. InternetOpenSocks endp