Читайте заголовки `Set-Cookie` из веб-запроса и отправляйте информацию о файлах cookie в powershell - PullRequest
0 голосов
/ 04 апреля 2019

Я использую только powershell.

У меня есть URL, чтобы сначала войти в систему: https://.../login с учетными данными

[string]$url = "http://blabla";
[string]$login = "$url/login";
[string]$user = "admin";
[string]$pass = "tester";
[string]$qs = "username=$user&password=$pass";

Invoke-WebRequest $login -Method Post -Body $qs -UseBasicParsing -SessionVariable session;

И я получил ответ от сервера, такой как:

Content-Length: 3 
Content-Type: text/plain; charset=UTF-8 
Set-Cookie:  SID=....; path=/

После вызова этого запроса я хочу получить cookie SID и использовать его в будущих вызовах:

Invoke-WebRequest $test -Method GET -UseBasicParsing -WebSession $session;

Но я получил ошибку 403.

Как передать этот файл cookie для $test запроса?

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Если вы хотите вручную извлечь заголовок Set-Cookie из запроса, вам нужно извлечь его из вашего ответа:

$response = Invoke-WebRequest $login ...
$response.Headers['Set-Cookie'] | ? { $_ -match '^SID' }

Но я хотел бы отметить, что вы уже захватываете свои куки, когда используете параметр SessionVariable:

$session.Cookies.GetCookies($url)

Вы можете передать эти файлы cookie новым запросам, выполнив:

Invoke-WebRequest ... -WebSession $session
0 голосов
/ 04 апреля 2019

Если $test содержит этот вывод и является объектом с этими свойствами, то вы можете использовать следующее.Это выведет SID=....

($test.Set-Cookie -split ";")[0]

Если вам нужно только значение SID, вы можете использовать:

($test.Set-Cookie -split ";" -split "SID=")[1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...