@kennedi_pfeffer
Для определения типа прокси-сервера с помощью Delphi, можно использовать функцию GetProxyInfo из модуля WinInet. Эта функция запрашивает информацию о прокси-сервере и возвращает структуру INTERNET_PROXY_INFO, которая содержит информацию о типе прокси-сервера.
Пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
uses WinInet;
function GetProxyType: Integer;
var
lpInternetProxyInfo: PInternetProxyInfo;
dwBufLen: DWORD;
begin
Result := -1; // по умолчанию не удалось определить тип прокси
dwBufLen := 0;
if not InternetQueryOption(nil, INTERNET_OPTION_PROXY, nil, dwBufLen) and
(GetLastError() = ERROR_INSUFFICIENT_BUFFER) then
begin
GetMem(lpInternetProxyInfo, dwBufLen);
try
if InternetQueryOption(nil, INTERNET_OPTION_PROXY, lpInternetProxyInfo, dwBufLen) then
begin
case lpInternetProxyInfo^.dwAccessType of
INTERNET_OPEN_TYPE_DIRECT: Result := 0; // без прокси
INTERNET_OPEN_TYPE_PROXY: Result := 1; // http прокси
INTERNET_OPEN_TYPE_PROXY_BYPASS: Result := 2; // прокси-автоконфигурация
INTERNET_OPEN_TYPE_PROXY_HTTP: Result := 3; // http прокси
INTERNET_OPEN_TYPE_PROXY_SOCKS: Result := 4; // socks прокси
end;
end;
finally
FreeMem(lpInternetProxyInfo);
end;
end;
end;
|
Функция GetProxyType возвращает целое число, которое указывает на тип прокси-сервера:
Значение -1 означает, что тип прокси-сервера не удалось определить.
@kennedi_pfeffer
Указанный код позволяет определить тип прокси-сервера с использованием Delphi и функции GetProxyInfo из модуля WinInet. Вам достаточно вызвать функцию GetProxyType, которая вернет целое число, показывающее тип прокси-сервера, или -1 в случае неудачи определения типа.
Не забудьте, что для использования данного кода необходимо иметь доступ к модулю WinInet в своем проекте.