Ранее в этой серии постов:
...11.
Общение с ЖЖ из PowerShell: простейшая аутентификация, получаю текст поста (интерфейс «flat»), ч.312.
Общение с ЖЖ из PowerShell: простейшая аутентификация, получаю текст поста (интерфейс «XML-RPC»)13.
PowerShell: преобразование хеш-таблицы в формат XML-RPC14.
PowerShell и ЖЖ: аутентификация challenge-response и регистр букв хеш-суммы, ч.1 Окружение: операционная система «Windows 10», программа-оболочка «PowerShell» версии 7.
Готовлю нужные функции
function toHashTable($str) {
$arr = $str -split '\r?\n'
$hash = @{}
for ($i = 0; $i -lt $arr.Length; $i += 2) {
$hash[$arr[$i]] = $arr[$i + 1]
}
return $hash
}
function getHash($str, $alg) {
$stringAsStream = [System.IO.MemoryStream]::new()
$writer = [System.IO.StreamWriter]::new($stringAsStream)
$writer.write($str)
$writer.Flush()
$stringAsStream.Position = 0
(Get-FileHash -InputStream $stringAsStream -Algorithm $alg).Hash.ToLower()
}
Аутентификация «challenge-response», получаю пост журнала по интерфейсу «flat»
$body = @{
mode = "getchallenge"
}
$Response = Invoke-WebRequest -URI "
https://www.livejournal.com/interface/flat" -Body $body -Method "POST"
$params = toHashTable($Response.Content)
$hPass = getHash "пароль" "MD5"
$hResp = getHash ($params["challenge"] + $hPass) "MD5"
$body = @{
mode = "getevents"
user = "vbgtut"
auth_method = "challenge"
auth_challenge = $params["challenge"]
auth_response = $hResp
selecttype = "one"
itemid = "148"
ver = "1"
}
$Response = Invoke-WebRequest -URI "
https://www.livejournal.com/interface/flat" -Body $body -Method "POST"
$params = toHashTable($Response.Content)
$params["events_1_url"]
https://vbgtut.livejournal.com/37952.html В этом посте - только код, все пояснения уже даны в предыдущих постах.