Тема: AHK: Залогиниться с помощью API сайта
Добрый день! Подскажите пожалуйста, с https://isogd.mos.ru/isogd-portal/home скачиваю два файла "COLOURPASS.xml" и "Паспорт колористического решения.pdf" через поиск по кадастровому номеру, используя Chrome.ahk
....
FormatTime, TimeString_day, , dd.MM.yyyy
IfNotExist, C:\Отчёт\%TimeString_day%
FileCreateDir, C:\Отчёт\%TimeString_day%
folder_end := "C:\Отчёт\" TimeString_day
url := "https://isogd.mos.ru/isogd-portal/login"
url1 := "https://isogd.mos.ru/isogd-portal/document/searchResult/all"
profile := A_Temp "\ChromeProfile"
if !FileExist(profile)
FileCreateDir, % profile
ChromeInst := new Chrome(profile) ; ,, "--headless")
Page := ChromeInst.GetPage()
Page.Call("Page.navigate", {"url": url})
Page.WaitForLoad()
login := ""
pass := ""
kadastr_nomer := ""
Page.Evaluate("document.querySelector('#login > div:nth-child(3) > input').value = '" login "' ")
Page.Evaluate("document.querySelector('#login > div:nth-child(3) > input').dispatchEvent(new Event('change'))")
Page.Evaluate("document.querySelector('#login > div:nth-child(4) > input').value = '" pass "' ")
Page.Evaluate("document.querySelector('#login > div:nth-child(4) > input').dispatchEvent(new Event('change'))")
Page.Evaluate("document.querySelector('#login > button').click()")
Page.Call("Page.navigate", {"url": url1})
Page.WaitForLoad()
Page.Evaluate("document.querySelector('#header > document-layout-top-nav-bar > div > div > div > div.input-group.input-group-lg.pull-left.search > input').value = '" kadastr_nomer "' ")
Page.Evaluate("document.querySelector('#header > document-layout-top-nav-bar > div > div > div > div.input-group.input-group-lg.pull-left.search > input').dispatchEvent(new Event('change'))")
Page.Evaluate("document.querySelector('#header > document-layout-top-nav-bar > div > div > div > div.input-group.input-group-lg.pull-left.search > span > button > i').click()")
while Page.Evaluate("document.getElementsByClassName('sk-spinner sk-spinner-three-bounce').length").value = 1
{
sleep 300
continue
}
nomer_folder := RegExReplace(nomer, ":", ".")
FileCreateDir, % folder_end "\" nomer_folder
fold := % folder_end "\" nomer_folder
Page.Call("Browser.setDownloadBehavior", { behavior : "allow", downloadPath : fold})
Page.Evaluate("document.querySelector('#sub-content > ui-view > search-result > div > loading-block > div > div > div > div > div > success > div > div:nth-child(4) > div > div > div > div > div > doc-table > table > tbody > tr > td:nth-child(1) > a').click()")
while Page.Evaluate("document.getElementsByClassName('sk-spinner sk-spinner-three-bounce').length").value = 1
{
sleep 300
continue
}
loop % Page.Evaluate("document.getElementsByClassName('file col-lg-12 col-md-12 col-sm-12').length").Value
{
if InStr(Page.Evaluate("document.getElementsByClassName('file col-lg-12 col-md-12 col-sm-12')[ " A_index " - 1 ].getElementsByClassName('fileName_name')[0].innerText").value, "COLOURPASS")
Page.Evaluate("document.getElementsByClassName('file col-lg-12 col-md-12 col-sm-12')[ " A_index " - 1 ].getElementsByClassName('fileInfo')[0].getElementsByTagName('span')[1].getElementsByTagName('a')[0].click()")
if InStr(Page.Evaluate("document.getElementsByClassName('file col-lg-12 col-md-12 col-sm-12')[ " A_index " - 1 ].getElementsByClassName('fileName_name')[0].innerText").value, "Паспорт колористического решения")
Page.Evaluate("document.getElementsByClassName('file col-lg-12 col-md-12 col-sm-12')[ " A_index " - 1 ].getElementsByClassName('fileInfo')[0].getElementsByTagName('span')[1].getElementsByTagName('a')[0].click()")
}
while FileExist(fold "\*.CRDownload")
Sleep 30
MsgBox, 262208, , Готово!
ChromeInst.Kill()
ExitApp
Но возможно это всё можно сделать через API (опыта нету)? но необходимо залогиниться, а где взять параметры логина и пароля ? Когда вручную логинешься, появляется "Request URL: https://isogd.mos.ru/isogd-portal/nsi-api/v1/users/user/smirnov_aa"
username := "smirnov_aa"
password := ""
loginBody := "username=" username "&password=" password
LoginURL := "https://isogd.mos.ru/isogd-portal/login"
HTTP := ComObjCreate("WinHTTP.WinHttpRequest.5.1")
HTTP.Open("GET", LoginURL)
HTTP.SetRequestHeader("Content-Type", "application/json; charset=UTF-8")
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36")
HTTP.SetRequestHeader("Referer", LoginURL)
HTTP.Send(loginBody)
HTTP.WaitForResponse()
HTTP.ResponseText
MsgBox % HTTP.ResponseText
return