Powershell Invoke-WebRequest на веб-сайте с всплывающим окном входа в систему - PullRequest
0 голосов
/ 25 февраля 2020

Я искал эту проблему по всему inte rnet и придумал несколько сообщений по этому поводу (например: Как отправить учетные данные в окно запроса с помощью Invoke-WebRequest ), но ни одна из них не кажется для работы в моем случае, вот так:

Я создал приглашение для входа на веб-сайт на локальном веб-сервере с .htpasswd и .htaccess (xampp Apache), и теперь я получаю всплывающее окно входа в систему:

enter image description here

Я могу войти с такими учетными данными:

пользователь: admin

пароль: admin123

Теперь я хотел бы, чтобы Powershell извлекал содержимое веб-сайта с помощью методов Invoke-WebRequest, Invoke-RestMethod или WebClient (или чего-то подобного). Заголовок можно увидеть здесь (basi c auth):

enter image description here

Однако в Powershell параметры -header и -credential оба возвращают 401 так что, очевидно, что-то не проходит правильно. Вот что я попробовал:

$user = "admin"
$pass = "admin123"
$pair = "${user}:${pass}"
$bytes = [System.Text.Encoding]::ASCII.GetBytes($pair)
$base64 = [System.Convert]::ToBase64String($bytes)
$basicAuthValue = "Basic $base64"
$headers = @{ Authorization = $basicAuthValue }

$securepass = $pass | ConvertTo-SecureString -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($user, $securepass)


Invoke-RestMethod -uri "http://localhost/" -Headers $headers
Invoke-RestMethod -uri "http://localhost/" -Credential $cred

Invoke-RestMethod -uri "http://localhost/" -Headers $headers -credential $cred

Invoke-WebRequest -uri "http://localhost/" -Headers $headers
Invoke-WebRequest -uri "http://localhost/" -Credential $cred

Invoke-WebRequest -uri "http://localhost/" -Headers $headers -credential $cred

Спасибо!

...