我只使用powershell。
我有一个要首先登录的网址: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错误。
如何为$test
请求传递该cookie?
答案 0 :(得分:0)
如果$test
包含该输出并且是具有这些属性的对象,则可以使用以下内容。这将输出SID=...
。
($test.Set-Cookie -split ";")[0]
如果只需要SID
的值,则可以使用:
($test.Set-Cookie -split ";" -split "SID=")[1]
答案 1 :(得分:0)
如果您要手动从请求中提取Set-Cookie
标头,则需要从响应中捕获该标头:
$response = Invoke-WebRequest $login ...
$response.Headers['Set-Cookie'] | ? { $_ -match '^SID' }
但是我想指出的是,当您使用SessionVariable
参数时,您已经在捕获Cookie:
$session.Cookies.GetCookies($url)
您可以执行以下操作将这些cookie传递给新请求:
Invoke-WebRequest ... -WebSession $session