Настройки прокси для HTTP-запроса с использованием libcurl

4635
linux developer

Я довольно новичок в протоколах HTTP с участием прокси и аутентификации. Я работаю над приложением, которое работает в Windows и использует сеть хоста для отправки / получения HTTP / S-запросов. Он также использует Libcurl, чтобы помочь передаче.

Тем не менее, у меня есть несколько проблем, когда я должен использовать прокси. Так как я нахожусь в сети, у меня есть прокси, определенный для определенных URL с файлом PAC. Поскольку Libcurl не поддерживает Javascript, я использую PACParser для анализа файла PAC и определения прокси.

Когда я использую прокси, я получаю аутентификацию 407. Я не уверен, как преодолеть проверку подлинности прокси. Я пробовал различные доступные настройки с CURL, такие как BASIC / DIGEST / NTLM. Ни один из них, кажется, не работает. Но если я жестко закодирую имя пользователя и пароль в запросе, я вижу, что запрос проходит.

Как я могу избежать жесткого кодирования имени пользователя / пароля и гарантировать, что использование прокси будет работать?

0

1 ответ на вопрос

0
artistoex

Смотрите libcurl-tutorial (3)раздел Переменные среды :

libcurl automatically checks and uses a set of environment variables to know what proxies to use for certain protocols. The names of the variables are following an ancient de facto standard and are built up as "[protocol]_proxy" (note the lower casing). Which makes the variable 'http_proxy' checked for a name of a proxy to use when the input URL is HTTP. Following the same rule, the variable named 'ftp_proxy' is checked for FTP URLs. Again, the proxies are always HTTP proxies, the different names of the variables simply allows different HTTP proxies to be used.  The proxy environment variable contents should be in the format "[protocol://][user:password@]machine[:port]". 

Таким образом, вы должны ввести прокси в настройках переменных среды, а не в настройках сети.

Но я пытаюсь понять, как добиться проверки подлинности прокси-сервера, если мой прокси-сервер мандат один. linux developer 10 лет назад 0
добавление `user: password @` не работает? artistoex 10 лет назад 0
Я предполагал, что Curl может договориться с хост-машиной, чтобы получить имя пользователя и пароль во время передачи. Это то, что нам нужно, чтобы получить имя пользователя и пароль? Я пытался исследовать winhttp «http query option», чтобы получить имя пользователя и pwd. Это правильное направление или есть какой-то другой механизм для получения имени пользователя и пароля для прокси linux developer 10 лет назад 0