Получение текущего зарегистрированного в файле cookie веб-сеанса с использованием powershell - PullRequest
0 голосов
/ 05 октября 2019

В данный момент я вошел в свой браузер и хотел получить текущий файл cookie этого сеанса. но когда я использую этот код, он создает другой идентификатор сессии только для этого запроса. НЕ для текущего сеанса в моем браузере.

            $url = "http://example.website/" 
            $cookiejar = New-Object System.Net.CookieContainer 
            $webrequest = [System.Net.HTTPWebRequest]::Create($url); 
            $webrequest.CookieContainer = $cookiejar 
            $response = $webrequest.GetResponse() 
            $cookies = $cookiejar.GetCookies($url) 
            foreach ($cookie in $cookies) { 

                Write-Host "$($cookie.name) = $($cookie.value)" 
            }

Я хотел вывести аналогичный файл cookie идентификатора сеанса в моем браузере и с помощью скрипта.

1 Ответ

0 голосов
/ 08 октября 2019

Как предполагает Lee_Dailey , вы можете использовать интерфейс объектов IE COM, однако сведения о файлах cookie ограничены. Детали возвращаются в виде строки, которую можно преобразовать в хеш-таблицу для получения ключа, пары значений, но расширенная информация, такая как домен или срок действия, будет недоступна.

Это будет работать только для Internet Explorer, и я не уверен, насколько полна информация, например, можно ли таким образом получить безопасные куки, поэтому вам нужно будет проверить.

В зависимости от ваших требований, этого может быть или не быть достаточным.

#URL we want to retrieve cookie information from
$URL = 'https://stackoverflow.com'

#Hashtable to store the cookie details
$CookieDetails = @{}

#Create a shell object
$Shell = New-Object -ComObject Shell.Application

#Find the web browser tab that starts with our URL
$IE = $Shell.Windows() | Where-Object { $_.Type -eq "HTML Document" -and $_.LocationURL -like "$URL*"}

#Split the cookie string and for each line parse into k,v pairs 
foreach($Line in ($IE.Document.cookie -split "; "))
{
    $Line = $Line -split "="
    $CookieDetails.($Line[0]) = $Line[1..-1] -join "="
}

#Output the hashtable result
$CookieDetails
...