Кто знающий? Можите привести простой пример отправки http запроса через socks5 при помощи winsock. На форуме нашел только одну тему с таким примером https://forum.antichat.ru/thread178458.html но как то глючно там все работает, допустим с http://awmproxy.com/ чекаю не одного нармально сокса, такое ведь не может быть.
сам get запрос: Code: GET / HTTP/1.0+#13#10+ Host: www.google.com+#13#10#13#10 немного переделанный и теперь рабочий код из той темы: Code: procedure TProxyCheckThread.Execute; var sock:LongWord; block:u_long; SockAddrIn:TSockAddrIn; timeout:ttimeval; fds:TFDSet; rc,curr,len:integer; ws:TWSAData; send_buf, result:string; buf:array[0..4095] of char; socks5_r:record // привет ver:byte; nmet:byte; met:byte; end; socks5_r_TPC:record // куда подключаться ver:byte; cmd:byte; rsv:byte; atyp:byte; ip:u_long; port:u_short; end; begin //приветствие socks5_r.ver:=5; socks5_r.nmet:=1; socks5_r.met:=0; WsaStartup($202,ws); //запрос соединения socks5_r_TPC.ver:=5; socks5_r_TPC.cmd:=1; socks5_r_TPC.rsv:=0; socks5_r_TPC.atyp:=1; socks5_r_TPC.ip:=inet_addr(Pansichar(GetipAddress(form1.edit2.Text))); socks5_r_TPC.port:=htons(80); block:=1; sock:=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if sock=LongWord(-1) then exit; SockAddrIn.sin_family := AF_INET; SockAddrIn.sin_port := htons(strtoint(PROXY_PORT)); SockAddrIn.sin_addr.s_addr := inet_addr(Pansichar(PROXY_IP)); ioctlsocket(sock, FIONBIO, block); // переводим сокет в неблокируемый режим if connect(sock, SockAddrIn, SizeOf(SockAddrIn))=SOCKET_ERROR then // пытаемся подключиться begin if WSAGetLastError=WSAEWOULDBLOCK then // проверяем что сокет перешел в неблокируемый режим begin FD_ZERO(fds); FD_SET(sock,fds); timeout.tv_sec:=strtoint(form1.Edit1.Text); // наш таймаут timeout.tv_usec:=0; rc:=select(0, nil, @fds, nil, @timeout); // ожидаем end; end; block:=0; ioctlsocket(sock, FIONBIO, block); // переводим сокет обратно в блокируемый режим if rc=0 then begin // сработал таймаут synchronize(showresultbad); end else begin // удачно соединились // запрос для http send_buf:='GET / HTTP/1.0'#13#10+ 'Host: '+form1.edit2.Text+#13#10#13#10; send(sock,socks5_r, 3,0); // шлем привет len := recv(sock, socks5_r, 2, 0); // считали данные if len > 0 then // если есть чтото begin //смотрим результат if (socks5_r.ver=5) and(socks5_r.met=0) then //успех begin send(sock, socks5_r_TPC, 10,0); // запрос на соединение с http сервом len := recv(sock, socks5_r_TPC, 10, 0); // считали данные if len > 0 then if socks5_r_TPC.cmd=0 then //успех begin send(sock, send_buf[1], length(send_buf),0); // шлем наднные http серву через прокси len := recv(sock, buf, 4096, 0); // читаем ответ if len > 0 then begin result := copy(buf, 0, len); if pos('200 OK', result)<>0 then result:='GOOD'; end; end; end; end; if result='GOOD' then synchronize(showresultgood); end; closesocket(sock); synchronize(dec_count); end;