Подключение из PHP
Пример отправляет запрос через выделенную статическую точку подключения. Данные берутся из окружения процесса; по умолчанию HTTP-прокси используется для HTTPS-адреса. Получения и ротации IP нет.
Подготовка
Задайте PROXY_HOST, PROXY_PORT, PROXY_USERNAME, PROXY_PASSWORD в терминале, контейнере или среде развёртывания программы. Используйте актуальные данные панели и порт выбранного протокола. Не помещайте реальные пароли в репозиторий, журналы или клиентский код.
Среда и зависимости
Нужен PHP 8+ с расширением cURL. Сохраните код как proxy_example.php.
php proxy_example.phpНастройка подключения
<?php
function requiredEnv(string $name): string {
$value = getenv($name);
if ($value === false || $value === '') {
throw new RuntimeException('Missing environment variable: ' . $name);
}
return $value;
}
$host = trim(requiredEnv('PROXY_HOST'), '[]');
$host = str_contains($host, ':') ? '[' . $host . ']' : $host;
$port = filter_var(requiredEnv('PROXY_PORT'), FILTER_VALIDATE_INT,
['options' => ['min_range' => 1, 'max_range' => 65535]]);
if ($port === false) throw new RuntimeException('Invalid PROXY_PORT');
$scheme = getenv('PROXY_SCHEME') ?: 'http';
if (!in_array($scheme, ['http', 'socks5h'], true)) {
throw new RuntimeException('PROXY_SCHEME must be http or socks5h');
}
$handle = curl_init('https://ip123.in/ip.json');
curl_setopt_array($handle, [
CURLOPT_PROXY => $host,
CURLOPT_PROXYPORT => $port,
CURLOPT_PROXYTYPE => $scheme === 'socks5h' ? CURLPROXY_SOCKS5_HOSTNAME : CURLPROXY_HTTP,
CURLOPT_PROXYUSERNAME => requiredEnv('PROXY_USERNAME'),
CURLOPT_PROXYPASSWORD => requiredEnv('PROXY_PASSWORD'),
CURLOPT_NOPROXY => '',
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => true,
]);
$body = curl_exec($handle);
$status = curl_getinfo($handle, CURLINFO_RESPONSE_CODE);
$errorCode = curl_errno($handle);
curl_close($handle);
if ($body === false || $status < 200 || $status >= 300) {
fwrite(STDERR, 'Request failed; cURL code: ' . $errorCode . '; HTTP status: ' . $status . PHP_EOL);
exit(1);
}
echo $body, PHP_EOL;По умолчанию PROXY_SCHEME=http. Для SOCKS5 задайте socks5h и соответствующий SOCKS5-порт: имя назначения будет разрешаться удалённо. Смена протокола не меняет выделенный статический выход.
Если подключение не работает
Если пример работает, а приложение нет, проверьте процесс, реально выполняющий запрос, настройки SDK, тайм-ауты и повторы. Не отключайте проверку TLS-сертификатов. Пример не выводит ошибки с данными доступа; диагностические журналы тоже нужно очищать. См. FAQ.