4

Я пытаюсь установить шоколад на окнах за прокси:

@powershell -ExecutionPolicy unrestricted

В Power Shell я выполняю

$wc=new-object net.webclient;
$wc.Proxy=new-object system.net.WebProxy('<myproxy-ip>:8012',$true);
$wc.Proxy.Credentials = new-object system.net.NetworkCredential('<myusername>','<mypass>');
iex ($wc.DownloadString('https://chocolatey.org/install.ps1'));

Я получаю следующую ошибку

Exception calling "DownloadString" with "1" argument(s): "The remote server returned an error: (407) Proxy Authentication Required."
At line:1 char:1
+ iex ($wc.DownloadString('https://chocolatey.org/install.ps1'));
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : WebException

Я использую то же имя пользователя / пароль, которое я должен ввести при запуске firefox / iexplorer (см. Изображение). Для прокси не настроено имя пользователя / пароль по умолчанию, так как я всегда должен их вводить.


Более подробная информация (с помощью Inspect Element в Firefox в приватном окне)

Заголовки ответа

Cache-Control: no-cache
Connection: close
Content-Length: 813
Content-Type: text/html; charset=utf-8
Pragma: no-cache
Proxy-Authenticate: BASIC realm="PROXY_INTERNET"
Proxy-Connection: close
Set-Cookie: BCSI-CS-dfaeac52a135c7c0=2; Path=/

3 ответа3

0

Смотрите https://github.com/chocolatey/chocolatey/wiki/Proxy-Settings-for-Chocolatey

В powershell определите функцию

function Create-Proxy($proxyHost,$proxyPort,$proxyUsername,$proxyPassword){
    #$proxy = [System.Net.WebRequest]::GetSystemWebProxy()
    $proxyUrl = $proxyHost+":"+$proxyPort;
    Write-Host "proxy url [$proxyUrl]";
    $proxy = New-Object System.Net.WebProxy($proxyUrl, $true);
    $passwd = ConvertTo-SecureString $proxyPassword -AsPlainText -Force; ## Website credentials
    $proxy.Credentials = New-Object System.Management.Automation.PSCredential ($proxyUsername, $passwd);
    return $proxy;
}

называть это как

$wc=new-object net.webclient;
$wc.UseDefaultCredentials = $true
$wc.Proxy = Create-Proxy "<proxy-host>" "<proxy-port>" "<proxy-username>" "<proxy-clear-pass>"
$wc.DownloadString('https://chocolatey.org/install.ps1');

Я обнаружил, что фактическая загрузка работала, но выполнение программы установки не помогло, поскольку она использовала пользовательский прокси-сервер.

Итак, iex ($wc.DownloadString("https://chocolatey.org/install.ps1")); не удается из-за неправильной конфигурации прокси в загруженном файле install.ps1

0

Вы можете использовать это. Работал на меня. https://github.com/chocolatey/choco/wiki/Proxy-Settings-for-Chocolatey

Явные настройки прокси

Шоколад имеет явную поддержку прокси, начиная с 0.9.9.9.

Вы можете просто настроить 1 или 3 параметра, и Chocolatey будет использовать прокси-сервер. прокси является обязательным, и это местоположение и порт прокси-сервера. proxyUser и proxyPassword являются необязательными. Значения для пользователя / пароля используются только для учетных данных, когда присутствуют оба.

choco config set proxy <locationandport>
choco config set proxyUser <username>
choco config set proxyPassword <passwordThatGetsEncryptedInFile>

пример

Выполнение следующих команд в 0.9.9.9:

choco config set proxy http://localhost:8888
choco config set proxyUser bob
choco config set proxyPassword 123Sup#rSecur3
0

Не могу проверить его (у меня нет аналогичного прокси-сервера), поэтому я не знаю, сработает ли это, но вот что вы можете попробовать:

$wc = new-object net.webclient;
$proxyUri = new-object system.uri("http://<myproxy-ip>:8012");
$wc.Proxy = new-object system.net.WebProxy($proxyUri, $true);
$cachedCredentials = new-object system.net.CredentialCache;
$netCredential = new-object system.net.NetworkCredential("<myusername>", "<mypass>");

$cachedCredentials.Add($proxyUri, "Basic", $netCredential);

$wc.Proxy.Credentials = $cachedCredentials.GetCredential($proxyUri, "Basic");

iex ($wc.DownloadString("https://chocolatey.org/install.ps1"));

Намерение состоит в том, чтобы использовать объект CredentialCache для принудительного использования учетных данных в "обычном" режиме аутентификации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .