<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Ввод пароля с помощью WinHttp.WinHttpRequest.5.1]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=17325</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=17325&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Ввод пароля с помощью WinHttp.WinHttpRequest.5.1».]]></description>
		<lastBuildDate>Fri, 19 Aug 2022 19:04:58 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Ввод пароля с помощью WinHttp.WinHttpRequest.5.1]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=154457#p154457</link>
			<description><![CDATA[<p>Банят для защиты сайта от излишней нагрузки. На других сайтах не получится, здесь свой уникальный способ. Чтоб понять, какие данные нужно посылать, нужно смотреть, что отправляет браузер, и попытаться это повторить в необходимых пределах (т. е. не всё, что отправляет браузер, нужно для успешного запроса).<br />В нашем случае необходимые данные вот эти:<br /> <br /> <span class="postimg"><img src="https://i.imgur.com/PDRrEzM.png" alt="https://i.imgur.com/PDRrEzM.png" /></span><br /> <br />Из них неизвестно поле <em>_csrf-frontend</em>. Я поискал его по названию в исходном коде страницы и нашёл. Конечно, это значение будет каждый раз новое. Поэтому алгоритм состоит из двух запросов, сначала получаем <em>_csrf-frontend</em>, затем составляем тело второго запроса, и вторым запросом уже получаем страницу с кодом.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 19 Aug 2022 19:04:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=154457#p154457</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Ввод пароля с помощью WinHttp.WinHttpRequest.5.1]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=154456#p154456</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />Я так понял банят для защиты от подбора?</p><p>А можете объяснить ваш принцип?<br />Хотелось бы понять как это вообще работает, чтобы в дальнейшем и на других сайтах пробовать подобное.<br />Это ведь что-то по типу серфинга по сайтам, но без браузера, верно?</p>]]></description>
			<author><![CDATA[null@example.com (Clannad5)]]></author>
			<pubDate>Fri, 19 Aug 2022 18:28:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=154456#p154456</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Ввод пароля с помощью WinHttp.WinHttpRequest.5.1]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=154455#p154455</link>
			<description><![CDATA[<p>Попробуйте так:<br /></p><div class="codebox"><pre><code>paste := &quot;xhUTm9C4&quot;
password := &quot;qwerty&quot;
baseUrl := &quot;https://pastebin.com/&quot;

WR := new WebRequest
html := WR.Fetch(baseUrl . paste)
if WR.error
   throw WR.error
RegExMatch(html, &quot;name=&quot;&quot;_csrf-frontend&quot;&quot; value=&quot;&quot;\K[^&quot;&quot;]+&quot;, _csrf_frontend)
if !_csrf_frontend
   throw &quot;_csrf-frontend code not found&quot;

body := &quot;_csrf-frontend=&quot; . EncodeDecodeURI(_csrf_frontend)
      . &quot;&amp;is_burn=1&quot;
      . &quot;&amp;PostPasswordVerificationForm%5Bpassword%5D=&quot; . EncodeDecodeURI(password)
      
Headers := { &quot;content-length&quot;: StrLen(body)
           , &quot;content-type&quot;  : &quot;application/x-www-form-urlencoded&quot;
           , &quot;pragma&quot;        : &quot;no-cache&quot;
           , &quot;cache-control&quot; : &quot;no-cache&quot;
           , &quot;user-agent&quot;    : &quot;Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 &quot;
                             . &quot;(KHTML, like Gecko) Chrome/104.0.5112.81 Safari/537.36 Edg/104.0.1293.54&quot; }

html := WR.Fetch(baseUrl . paste, &quot;POST&quot;, Headers, body)
if WR.error
   throw WR.error
WR := &quot;&quot;

Doc := ComObjCreate(&quot;htmlfile&quot;)
Doc.write(&quot;&lt;meta http-equiv=&quot;&quot;X-UA-Compatible&quot;&quot; content=&quot;&quot;IE=9&quot;&quot;&gt;&quot;)
Doc.write(html)

textArea := Doc.querySelector(&quot;textarea.js-paste-raw&quot;)
if !IsObject(textArea)
   throw &quot;textarea not found&quot;
code := textArea.value
Doc := &quot;&quot;

MsgBox, % code

class WebRequest
{
   __New() {
      this.whr := ComObjCreate(&quot;WinHttp.WinHttpRequest.5.1&quot;)
   }
   
   __Delete() {
      this.whr := &quot;&quot;
   }
   
   Fetch(url, method := &quot;GET&quot;, HeadersArray := &quot;&quot;, body := &quot;&quot;, ByRef outData := &quot;&quot;) {
      this.whr.Open(method, url, true)
      for name, value in HeadersArray
         this.whr.SetRequestHeader(name, value)
      this.error := &quot;&quot;
      this.whr.Send(body)
      this.whr.WaitForResponse()
      status := this.whr.status
      if (status != 200)
         this.error := &quot;HttpRequest error, status: &quot; . status
      Arr := this.whr.responseBody
      pData := NumGet(ComObjValue(arr) + 8 + A_PtrSize)
      length := Arr.MaxIndex() + 1
      if !IsByref(outData)
         res := StrGet(pData, length, &quot;UTF-8&quot;)
      else {
         VarSetCapacity(outData, length, 0)
         DllCall(&quot;RtlMoveMemory&quot;, &quot;Ptr&quot;, &amp;outData, &quot;Ptr&quot;, pData, &quot;Ptr&quot;, length)
         res := length
      }
      Return res
   }
}

EncodeDecodeURI(str, encode := true, component := true) {
   static Doc, JS
   if !Doc {
      Doc := ComObjCreate(&quot;htmlfile&quot;)
      Doc.write(&quot;&lt;meta http-equiv=&quot;&quot;X-UA-Compatible&quot;&quot; content=&quot;&quot;IE=9&quot;&quot;&gt;&quot;)
      JS := Doc.parentWindow
      ( Doc.documentMode &lt; 9 &amp;&amp; JS.execScript() )
   }
   Return JS[ (encode ? &quot;en&quot; : &quot;de&quot;) . &quot;codeURI&quot; . (component ? &quot;Component&quot; : &quot;&quot;) ](str)
}</code></pre></div><p>Если такие запросы делать слишком часто, могут забанить по ip.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 19 Aug 2022 16:04:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=154455#p154455</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Ввод пароля с помощью WinHttp.WinHttpRequest.5.1]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=154452#p154452</link>
			<description><![CDATA[<p>Здравствуйте!</p><p>Имеется сайт Pastebin и на нём имеется файл с паролём: <a href="https://pastebin.com/xhUTm9C4">https://pastebin.com/xhUTm9C4</a>, пароль &quot;qwerty&quot;.<br />При переходе по ссылке, мы получаем строку ввода пароля.</p><p>Как отправить пароль в данную строку и получить то, что находится внутри файла?<br />С помощью WinHttp.WinHttpRequest.5.1 это реализуемо и как?<br />Как я понял, нужно отправить пароль в &quot;PostPasswordVerificationForm[password]&quot;, но как это сделать через POST запрос?</p>]]></description>
			<author><![CDATA[null@example.com (Clannad5)]]></author>
			<pubDate>Fri, 19 Aug 2022 07:53:29 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=154452#p154452</guid>
		</item>
	</channel>
</rss>
