Найпростіше це використовувати HTTP-проксі:
IdHTTP1.ProxyParams.ProxyPort:=StrToInt(Copy(Edit1.Text,Pos(‘:’,Edit1.Text)
+1,Length(Edit1.Text)));
Все гранично зрозуміло і просто.
Для використання SOCKS4 і SOCKS5 крім компонента IdHTTP1 потрібні компонент IdSocksInfo (вкладка Indy Misc) і компонент IdSSLIOHandlerSocketOpenSSL (вкладка Indy I/O Handlers).
У IdSocksInfo вказуємо тип проксі (svSocks4 або svSocks5), адресу і порт, а також виставляємо властивість Authentication в saNoAuthentication:
IdSocksInfo1.Host:=Copy(Edit1.Text,1,Pos(‘:’,Edit1.Text)-1);
IdSocksInfo1.Port:=StrToInt(Copy(Edit1.Text,Pos(‘:’,Edit1.Text)+1,
Length(Edit1.Text)));
IdSocksInfo1.Authentication:= saNoAuthentication;
І приєднуємо IdSocksInfo1 до IdSSLIOHandlerSocketOpenSSL1, а IdSSLIOHandlerSocketOpenSSL1 до IdHTTP1:
IdHTTP1.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
Після цього можна робити запит. Запит я робив на сторінку moi-ip.ru, де на сторінці відображається IP запитуваного. І парсим з відповіді IP-адресу, який виводимо в Memo. Якщо все вірно і проксі хороший, то використовується проксі і виведений в Memo повинні співпасти.
В якості бонусу в програмі показано, як можна показувати прогрес отримання відповіді сервера. Він відображається у вікні Gauge (можна також використовувати ProgressBar). На самому початку запиту (IdHTTP1WorkBegin) з заголовків відповіді сервера з поля Content-Length беремо довжину одержуваного відповіді (звертаю увагу, що такого заголовка може не бути, а значить не завжди можна знати, якої довжини буде відповідь). І властивості MaxValue присвоюємо значення:
А під час отримання відповіді (IdHTTP1Work) (а приходить він частинами) змінюємо властивість Progress:
В результаті у нас буде наочне зображення прогресу завантаження сторінки.
[Завантажити] оригінал взято з avtuh.ru