<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Залогиниться с помощью API сайта]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=16285</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=16285&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Залогиниться с помощью API сайта».]]></description>
		<lastBuildDate>Sat, 24 Apr 2021 06:23:04 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Залогиниться с помощью API сайта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147493#p147493</link>
			<description><![CDATA[<p>Надо либо изучать апи, либо смотреть, что отправляет броузер и повторять тоже самое через winhttprequest.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 24 Apr 2021 06:23:04 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147493#p147493</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Залогиниться с помощью API сайта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147492#p147492</link>
			<description><![CDATA[<p>Добрый день! Подскажите пожалуйста, с <a href="https://isogd.mos.ru/isogd-portal/home">https://isogd.mos.ru/isogd-portal/home</a> скачиваю два файла &quot;COLOURPASS.xml&quot; и &quot;Паспорт колористического решения.pdf&quot; через поиск по кадастровому номеру, используя Chrome.ahk</p><div class="codebox"><pre><code>
....

FormatTime, TimeString_day, , dd.MM.yyyy

IfNotExist, C:\Отчёт\%TimeString_day%
   FileCreateDir, C:\Отчёт\%TimeString_day%
   
folder_end :=  &quot;C:\Отчёт\&quot; TimeString_day 

url := &quot;https://isogd.mos.ru/isogd-portal/login&quot; 
url1 := &quot;https://isogd.mos.ru/isogd-portal/document/searchResult/all&quot;

profile := A_Temp &quot;\ChromeProfile&quot;
if !FileExist(profile)
	FileCreateDir, % profile 

ChromeInst := new Chrome(profile) ; ,, &quot;--headless&quot;) 

Page := ChromeInst.GetPage()
Page.Call(&quot;Page.navigate&quot;, {&quot;url&quot;: url}) 
Page.WaitForLoad()

login := &quot;&quot;
pass := &quot;&quot;

kadastr_nomer := &quot;&quot; 

Page.Evaluate(&quot;document.querySelector(&#039;#login &gt; div:nth-child(3) &gt; input&#039;).value = &#039;&quot; login &quot;&#039; &quot;)
Page.Evaluate(&quot;document.querySelector(&#039;#login &gt; div:nth-child(3) &gt; input&#039;).dispatchEvent(new Event(&#039;change&#039;))&quot;)

Page.Evaluate(&quot;document.querySelector(&#039;#login &gt; div:nth-child(4) &gt; input&#039;).value = &#039;&quot; pass &quot;&#039; &quot;)
Page.Evaluate(&quot;document.querySelector(&#039;#login &gt; div:nth-child(4) &gt; input&#039;).dispatchEvent(new Event(&#039;change&#039;))&quot;)

Page.Evaluate(&quot;document.querySelector(&#039;#login &gt; button&#039;).click()&quot;)

Page.Call(&quot;Page.navigate&quot;, {&quot;url&quot;: url1})
Page.WaitForLoad()

Page.Evaluate(&quot;document.querySelector(&#039;#header &gt; document-layout-top-nav-bar &gt; div &gt; div &gt; div &gt; div.input-group.input-group-lg.pull-left.search &gt; input&#039;).value = &#039;&quot; kadastr_nomer &quot;&#039; &quot;)
Page.Evaluate(&quot;document.querySelector(&#039;#header &gt; document-layout-top-nav-bar &gt; div &gt; div &gt; div &gt; div.input-group.input-group-lg.pull-left.search &gt; input&#039;).dispatchEvent(new Event(&#039;change&#039;))&quot;)

Page.Evaluate(&quot;document.querySelector(&#039;#header &gt; document-layout-top-nav-bar &gt; div &gt; div &gt; div &gt; div.input-group.input-group-lg.pull-left.search &gt; span &gt; button &gt; i&#039;).click()&quot;)

while Page.Evaluate(&quot;document.getElementsByClassName(&#039;sk-spinner sk-spinner-three-bounce&#039;).length&quot;).value = 1
{
	sleep 300
	continue
}

nomer_folder := RegExReplace(nomer, &quot;:&quot;, &quot;.&quot;)
FileCreateDir, % folder_end &quot;\&quot; nomer_folder

fold := % folder_end &quot;\&quot; nomer_folder
Page.Call(&quot;Browser.setDownloadBehavior&quot;, { behavior : &quot;allow&quot;, downloadPath : fold})  
	
	
Page.Evaluate(&quot;document.querySelector(&#039;#sub-content &gt; ui-view &gt; search-result &gt; div &gt; loading-block &gt; div &gt; div &gt; div &gt; div &gt; div &gt; success &gt; div &gt; div:nth-child(4) &gt; div &gt; div &gt; div &gt; div &gt;  div &gt; doc-table &gt; table &gt; tbody &gt; tr &gt; td:nth-child(1) &gt; a&#039;).click()&quot;)

while Page.Evaluate(&quot;document.getElementsByClassName(&#039;sk-spinner sk-spinner-three-bounce&#039;).length&quot;).value = 1
{
	sleep 300
	continue
}
 
loop % Page.Evaluate(&quot;document.getElementsByClassName(&#039;file col-lg-12 col-md-12 col-sm-12&#039;).length&quot;).Value
{
    if InStr(Page.Evaluate(&quot;document.getElementsByClassName(&#039;file col-lg-12 col-md-12 col-sm-12&#039;)[ &quot; A_index &quot; - 1 ].getElementsByClassName(&#039;fileName_name&#039;)[0].innerText&quot;).value, &quot;COLOURPASS&quot;)
		Page.Evaluate(&quot;document.getElementsByClassName(&#039;file col-lg-12 col-md-12 col-sm-12&#039;)[ &quot; A_index &quot; - 1 ].getElementsByClassName(&#039;fileInfo&#039;)[0].getElementsByTagName(&#039;span&#039;)[1].getElementsByTagName(&#039;a&#039;)[0].click()&quot;)
		
	if InStr(Page.Evaluate(&quot;document.getElementsByClassName(&#039;file col-lg-12 col-md-12 col-sm-12&#039;)[ &quot; A_index &quot; - 1 ].getElementsByClassName(&#039;fileName_name&#039;)[0].innerText&quot;).value, &quot;Паспорт колористического решения&quot;) 
		Page.Evaluate(&quot;document.getElementsByClassName(&#039;file col-lg-12 col-md-12 col-sm-12&#039;)[ &quot; A_index &quot; - 1 ].getElementsByClassName(&#039;fileInfo&#039;)[0].getElementsByTagName(&#039;span&#039;)[1].getElementsByTagName(&#039;a&#039;)[0].click()&quot;)

}

while FileExist(fold &quot;\*.CRDownload&quot;)
	Sleep 30
	   
MsgBox, 262208, , Готово! 

ChromeInst.Kill()
ExitApp
</code></pre></div><p>Но возможно это всё можно сделать через API (опыта нету)? но необходимо залогиниться, а где взять параметры логина и пароля ? Когда вручную логинешься, появляется &quot;Request URL: https://isogd.mos.ru/isogd-portal/nsi-api/v1/users/user/smirnov_aa&quot;</p><div class="codebox"><pre><code>
username := &quot;smirnov_aa&quot;
password := &quot;&quot;

loginBody := &quot;username=&quot; username &quot;&amp;password=&quot; password 

LoginURL := &quot;https://isogd.mos.ru/isogd-portal/login&quot;

HTTP := ComObjCreate(&quot;WinHTTP.WinHttpRequest.5.1&quot;)
HTTP.Open(&quot;GET&quot;, LoginURL) 
HTTP.SetRequestHeader(&quot;Content-Type&quot;, &quot;application/json; charset=UTF-8&quot;)
HTTP.SetRequestHeader(&quot;User-Agent&quot;, &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36&quot;)
HTTP.SetRequestHeader(&quot;Referer&quot;, LoginURL)

HTTP.Send(loginBody)
HTTP.WaitForResponse()
HTTP.ResponseText

MsgBox % HTTP.ResponseText
return
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (inseption86)]]></author>
			<pubDate>Sat, 24 Apr 2021 06:10:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147492#p147492</guid>
		</item>
	</channel>
</rss>
