@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 в своем проекте.