invalid-input
Что проверить: Некорректный JSON, обязательное поле или перевод строки в значении.
Следующее действие: Используйте неизменённую программу запуска и полный пример. Ввод отклоняется до запуска curl и не выводится.
Подтвердите маршрут до проверки реального сервиса.
Настройте клиент, отправляющий запрос, и проверьте ответ вместе с маршрутом. В этом локальном упражнении curl получает конфигурацию через stdin без пароля в аргументах команды. Успешный запрос сравнивается с неверным паролем и прямым обходом. Платный прокси, аккаунт и внешний адрес не нужны.
Дата проверки:
Рецепт проверен на Windows с Node.js 24.14.0 и curl 8.13.0. Нужны только встроенные модули Node и curl, без установки пакетов. В PowerShell/cmd проверьте node --version и curl.exe --version; в POSIX shell используйте curl --version.
Сохраните файл local-first-connection-v1.mjs по ссылке в новую папку. Полный блок «Пример запроса» сохраните рядом как example.mjs. Прочтите оба файла: программа запуска не изолирует произвольный код.
Выполните команду ниже в PowerShell, cmd или POSIX shell. Программа поднимет прокси и сервер назначения на loopback с временными портами и передаст синтетические данные в example.mjs через stdin.
Общий код выхода 0 означает совпадение ожидаемых результатов успешного запроса, неверного пароля и обхода. Оба слушателя затем закрываются. Любой другой общий код требует проверки; отсутствие клиента не означает отказ авторизации.
Программа пропускает только GET на собственный точный адрес /echo и не поддерживает CONNECT. Она не обращается к платформам, не меняет аккаунты и не устанавливает клиент. Реальные пароли и файл protected-config не нужны.
Программа передаёт proxy, username, password, target и bypass через stdin. Пример направляет конфигурацию curl в закрытый канал: `curl -q --config -`. Аргумент -q стоит первым, чтобы стандартный curlrc не менял запрос. В Windows выбирается curl.exe, а не псевдоним PowerShell. CURL_BIN позволяет указать уже доверенный исполняемый файл curl.
Используйте клавиши со стрелками для горизонтальной прокрутки.
node local-first-connection-v1.mjs example.mjsВыполните из папки с двумя сохранёнными файлами. Команда не использует перенаправление ввода shell и подходит для PowerShell, cmd и POSIX shell.
Проверено на локальном примере
Используйте клавиши со стрелками для горизонтальной прокрутки.
import { readFileSync } from 'node:fs'
import { spawn } from 'node:child_process'
let cfg
try {
cfg = JSON.parse(readFileSync(0, 'utf8'))
if (!cfg || typeof cfg.bypass !== 'boolean' ||
['proxy','username','password','target'].some(key =>
typeof cfg[key] !== 'string' || /[\r\n]/.test(cfg[key]))) throw new Error()
} catch {
console.log(JSON.stringify({error:'invalid-input'}))
process.exit(1)
}
const quote = value => {
return '"' + value.replaceAll('\\', '\\\\').replaceAll('"', '\\"') + '"'
}
const curl = process.env.CURL_BIN || (process.platform === 'win32' ? 'curl.exe' : 'curl')
const config = [
'proxy = ' + quote(cfg.proxy),
'proxy-user = ' + quote(cfg.username + ':' + cfg.password),
'noproxy = ' + quote(cfg.bypass ? '*' : ''),
'url = ' + quote(cfg.target),
'silent',
'fail',
'connect-timeout = 3',
'max-time = 5',
'write-out = "\\n%{http_code}"',
].join('\n')
const child = spawn(curl, ['-q', '--config', '-'], { stdio: ['pipe','pipe','pipe'], windowsHide:true })
let output = '', startFailed = false
child.stdout.setEncoding('utf8')
child.stdout.on('data', chunk => { output += chunk })
child.stderr.resume()
child.stdin.on('error', () => {})
child.on('error', () => {
startFailed = true
console.log(JSON.stringify({error:'runtime-unavailable'}))
process.exitCode = 1
})
child.on('close', code => {
if (startFailed) return
const match = output.match(/\n(\d{3})$/)
if (!match) {
console.log(JSON.stringify({error:'runtime-invalid'}))
process.exitCode = 1
return
}
const http_status = Number(match[1])
const body = output.slice(0, match.index)
const marker = body === 'first-connection-fixture'
console.log(JSON.stringify({http_status,curl_exit:code,marker}))
process.exitCode = code === 0 && http_status === 200 && marker ? 0 : 1
})
child.stdin.end(config)
Сохраните как example.mjs. Node передаёт curl в argv только -q --config -, а синтетическую конфигурацию — через stdin. Тела ошибок и необработанная диагностика curl не выводятся.
Проверено на локальном примере
Используйте клавиши со стрелками для горизонтальной прокрутки.
| Критерий | Ответ и код выхода | Записи запросов |
|---|---|---|
| success | http_status=200, curl_exit=0, marker=true | proxy_requests=1; destination_requests=1 |
| wrong_credentials | http_status=407, curl_exit=22; ожидаемая ошибка примера | proxy_requests=1; destination_requests=0 |
| bypass | http_status=200, curl_exit=0, marker=true | proxy_requests=0; destination_requests=1 |
Сама программа запуска завершится с кодом 0 только при совпадении всех трёх исходов. Это счётчики локальной HTTP-проверки, а не проверка рабочего внешнего выхода.
Используйте клавиши со стрелками для горизонтальной прокрутки.
| Критерий | Значение в curl | Что проверяет упражнение |
|---|---|---|
| HTTP-прокси | proxy-user задаёт авторизацию на прокси. Вход на сайт или авторизация API настраиваются отдельно. | Только локальный HTTP GET с авторизацией |
| Назначение HTTPS | HTTP-прокси обычно использует CONNECT для адреса HTTPS; TLS проверяется отдельно. | CONNECT, TLS и сертификаты здесь не проверены |
| Параметры SOCKS5 | --socks5 или socks5:// разрешает имя назначения локально; --socks5-hostname или socks5h:// поручает это прокси. | Поведение параметров по документации curl; SOCKS5 не запускался |
Разница DNS относится к выбранному параметру или URL-схеме curl, а не к безусловному свойству протокола SOCKS5.
Используйте адрес только для чтения, который принадлежит вам или разрешён для теста. Уточните протокол, хост, порт и данные авторизации прокси в разрешённых вам реквизитах подключения. Не используйте платный API как проверку связности.
Для ручной конфигурации curl храните proxy и proxy-user в локальном файле, доступном только вашему пользователю ОС, и передавайте имя файла параметру --config. Ограничьте доступ до записи секретов: права только владельца в POSIX или ACL только для своего пользователя в Windows. Не храните файл в общей или синхронизируемой папке и в системе контроля версий; удалите после работы. Эта страница не предлагает и не проверяет конкретную команду настройки прав ОС.
Не раскрывайте переменную с паролем в аргументы команды. Избегайте verbose/trace, снимков конфигурации и необработанной диагностики. Авторизация прокси отделена от авторизации назначения. Проверка реального выхода требует адреса клиента, наблюдаемого разрешённым сервером, и записи нужного прокси; локальный пример не подтверждает страну или совместимость платформ.
Что проверить: Некорректный JSON, обязательное поле или перевод строки в значении.
Следующее действие: Используйте неизменённую программу запуска и полный пример. Ввод отклоняется до запуска curl и не выводится.
Что проверить: curl не запустился либо не вернул ожидаемый формат статуса.
Следующее действие: Проверьте установленный файл и версию. Это не отказ прокси.
Что проверить: Прокси отклонил синтетический пароль, сервер назначения не получил запрос.
Следующее действие: Это ожидаемый отрицательный контроль. При реальных настройках проверяйте пароль прокси, а не вход на сайт.
Что проверить: Контроль обхода обращается к серверу напрямую.
Следующее действие: В реальной проверке изучите no-proxy и переменные окружения curl. Ответ сам по себе не подтверждает маршрут.
Что проверить: Не запустился локальный слушатель, не завершился пример или не совпал контрольный результат.
Следующее действие: Остановитесь, проверьте оба файла и локальную среду. Не делайте выводов о внешней платформе.
Если нужно было проверить только маршрут curl, закончите после сверки двух записей. У браузерной автоматизации и отдельного клиента API свои настройки. Сохраните прямой доступ, если его достаточно: прокси добавляет ещё одно соединение для диагностики.
Загрузки и подключение
Ссылки взяты из общего каталога инструментов кабинета. Выберите инструмент для своей системы и настройте приобретённый прокси по инструкции.
Платформа в каталоге: Chrome
Скачать ↗Платформа в каталоге: Браузер 360
Скачать ↗Платформа в каталоге: win7/8/10/11
Скачать ↗Платформа в каталоге: macOS 10.12+
Скачать ↗Платформа в каталоге: macOS 10.12+
Скачать ↗Платформы и версии указаны по существующему каталогу, а не по новой проверке совместимости. Перед установкой проверьте требования инструмента.
Войдите для просмотра параметров подключения, мобильных приложений и других инструментов ↗
Официальная документация · Проверено:
Локальный пример · Проверено:
Node.js 24.14.0 и curl 8.13.0; код со страницы работает с публичным loopback-примером и синтетическими реквизитами через stdin; проверяются успех, 407 и прямой доступ.
Только контролируемый локальный HTTP. Платные сервисы, региональный выход, внешние аккаунты, TLS/CONNECT, SOCKS и браузерные интеграции не проверены.