Что нового

Как зарегистрироваться с помощью WinHTTP?

sss

Продвинутый
Сообщения
332
Репутация
96
Всем доброго времени суток! Насколько я понял, с помощью WinHTTP UDF можно общаться с сервером (сайтом) напрямую, без IE. Помогите с ней разобраться. С HTTPRequest знаком только по названию и по английской (и очень непонятной, хотя англ. знаю более-менее) справке. Для примера, покажите пожалуйста, как залогиниться в ЯндексПочте (или Gmail) и создать учетную запись в системе DropBox (страница регистрации). Если не трудно, добавляйте комментарии.

P.S: Как понять, какой запрос отправлять сайту на те или иные действия?
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Присоединяюсь к вопросу! :beer:
Мудрил я с всякими там HTTP.au3,WinNet.au3... так и не понял, как правильно работать с этим :(
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Вроде нашел где можно смотреть переданные\принятые запросы в браузере Google Chrome (у меня мод - ChromePlus, но вроде это и в станлартной есть). Настройки (кнопка справа сверху - гаечный ключ) - Инструменты - Инструменты разработчика - внизу появляется консолька, вкладка Network (сеть). При заходе на главную страницу этого форума выдает следующее:
Request URL:http://autoit-script.ru/index.php
Request Method:GET
Status Code:200 OK
Request Headers
Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cookie:SMFCookie11=****не скажу****
Host:autoit-script.ru
If-Modified-Since:Thu, 23 Jun 2011 18:34:52 GMT
Proxy-Connection:keep-alive
Referer:http://autoit-script.ru/index.php
User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Safari/534.24 ChromePlus/1.6.2.0
Response Headers
Cache-Control:blum:rivate
Connection:keep-alive
Content-Encoding:gzip
Content-Length:11222
Content-Type:text/html; charset=UTF-8
Date:Thu, 23 Jun 2011 18:38:29 GMT
Expires:Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified:Thu, 23 Jun 2011 18:38:29 GMT
Pragma:no-cache
Server:nginx/0.6.32
Vary:Accept-Encoding
X-Powered-By:blum:HP/5.2.6-1+lenny10
Это был запрос index.php, там еще грузятся скрипты js, стили css и т.д.Но так и могу понять, как это использовать - например, получить html-код главной страницы и зарегистрироваться, например.
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
Sky-WaLkeR
Объясняю утрированно:
чтобы получить страницу используют метод GET или POST
первый - получить страницу
второй - отправить заполненную форму (регистрационную например)
формат выглядит примерно так:
Код:
$sUrl = 'http://www.autoit-script.ru'
;~ $ProxyServer = 'ip:port'
;~ $ProxyUser = 'login'
;~ $ProxyPass = 'password'
$oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
;~ $oHTTP.SetProxy(2, $ProxyServer)
$oHTTP.Open('GET', $sUrl, False)
;~ $oHTTP.SetCredentials($ProxyUser, $ProxyPass, 0)
$oHTTP.Send('')
$oHTTP.WaitForResponse
$sHTML = $oHTTP.ResponseText
ConsoleWrite($sHTML & @CRLF)

Если нужно использовать прокси - снимай комментарии и вписывай нужное
Это пример для GET

Для работы с POST, как правило нужны еще и куки для подтверждения - их можно получить из заголовка так:
Код:
$headers = $oHTTP.GetAllResponseHeaders()

Дальше нужно выдрать куки и использовать их везде где нужно.

Можно получить только куки из заголовка так:
Код:
$oHTTP.GetResponseHeader('Set-Cookie')

Но если куков несколько строк - выдаст только верхнюю, так что не советую.

А сами данные для формы передаются в .Send()
Код:
$oHTTP.Send("login=" & $sEmail & "&pass=" & $sPass)


Вот пара примеров (сам не пробовал ибо нету контакта):
http://autoit-script.ru/index.php?topic=656
http://autoit-script.ru/index.php?topic=3758.0
 

misha497

Новичок
Сообщения
24
Репутация
2
Sky-WaLkeR
Собственно к тому что сказал Redline хочется добавить, что зачастую куки устанавливаются js.Т.Е., насколько я понимаю, для того чтобы выдрать нужную куку надо разбираться в коде js и перевести алгоритм получения куки на autoit.
А для того чтобы авторизация сначала происходила в скрипте, а потом в браузере, нужно понять по какому принципу хранятся cookies в браузере( у всех он разный) и загонять туда полученные cookies из http ответа.(не факт что получиться + опять же ограничение по js.)
P.S сам использую связку Огне лис + HTTPfox - очень удобно. и WinHTTP для мониторинга работы autoit скриптов.
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Допустим мне надо залогинится на сайте, я:
1) Посылаю GET запрос
2) Выдераю куки
3) Заполняю форму
4) Добавляю куки в заголовок
5) Отправляю POST запрос

Я правильно понял алгоритм? Я вообще в этом пень :D

---

На википедии много интересного про HTTP заголовки)
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Большое спасибо за ответы! Но почему-то не получается залогиниться на этом сайте. Вот код:
Код:
Func Login($login,$pass)
	$ProxyServer = 'прокси:порт'
	$oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
    $oHTTP.SetProxy(2, $ProxyServer)

	$oHTTP.Open("GET", "http://autoit-script.ru/index.php")
	$oHTTP.Send('')
    $oHTTP.WaitForResponse
	$headers = $oHTTP.GetAllResponseHeaders()
	$cookies=GetCookie($headers)
	MsgBox(0,'',$cookies)


    $oHTTP.Open("POST", "http://autoit-script.ru/index.php?action=login2")
    $oHTTP.setTimeouts(5000, 5000, 15000, 15000)
    $oHTTP.SetRequestHeader("Accept", "application/xml,application/xhtml+xml,text/html,text/plain,image/png,*/*")
    $oHTTP.SetRequestHeader("Accept-Charset", "windows-1251,utf-8,*")
	$oHTTP.SetRequestHeader("Accept-Encoding", "gzip,deflate,sdch")
	$oHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru,en-US,en")
	$oHTTP.SetRequestHeader("Cache-Control", "max-age=0")
	$oHTTP.SetRequestHeader("Content-Length", "87")
	$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
	$oHTTP.SetRequestHeader("Host","autoit-script.ru")
	$oHTTP.SetRequestHeader("Proxy-Connection", "Keep-alive")
    $oHTTP.SetRequestHeader("User-Agent", 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Safari/534.24 ChromePlus/1.6.2.0')
	$oHTTP.SetRequestHeader("Cookie", $cookies)
    $oHTTP.Send('user' & $login & '&passwrd=' & $pass)
    $oHTTP.WaitForResponse
	$cookies = $oHTTP.GetResponseHeader('Set-Cookie')
;~ 	$cookies=GetCookie($headers)
	MsgBox(0,'',$cookies)

	$oHTTP.Open('GET', 'http://autoit-script.ru/index.php', False)
	$oHTTP.SetRequestHeader("Accept", "application/xml,application/xhtml+xml,text/html,text/plain,image/png,*/*")
    $oHTTP.SetRequestHeader("Accept-Charset", "windows-1251,utf-8,*")
	$oHTTP.SetRequestHeader("Accept-Encoding", "gzip,deflate,sdch")
	$oHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru,en-US,en")
	$oHTTP.SetRequestHeader("Cache-Control", "max-age=0")
	$oHTTP.SetRequestHeader("Content-Length", "87")
	$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
	$oHTTP.SetRequestHeader("Host","autoit-script.ru")
	$oHTTP.SetRequestHeader("Proxy-Connection", "Keep-alive")
    $oHTTP.SetRequestHeader("User-Agent", 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Safari/534.24 ChromePlus/1.6.2.0')
	$oHTTP.SetRequestHeader("Cookie", $cookies)
    $oHTTP.Send('')
    $oHTTP.WaitForResponse
	$sHTML = $oHTTP.ResponseText
	$cookies = $oHTTP.GetAllResponseHeaders()
;~ 	$cookies=GetCookie($headers)
	MsgBox(0,'',$cookies)
	FileWrite('qwe.txt',$sHTML)

EndFunc



; Получаем cookie из заголовков ответа
Func GetCookie($headers)
    Local $Cookie_String
    $headers = StringSplit($headers,@LF)
    For $i=1 to $headers[0]
        If StringInStr($headers[$i],"Set-Cookie")>0 Then
           $start         = StringInStr($headers[$i],"Set-Cookie:")+12
           $str           = StringSplit(StringMid($headers[$i],$start),";")
           $Cookie_String&= $str[1]&"; "
        EndIf
    Next
        $Cookie_String        = StringStripWS($Cookie_String,1)
    $Cookie_String        = StringStripWS($Cookie_String,2)
    $Cookie_String        = StringLeft($Cookie_String,StringLen($Cookie_String)-1)
    $COOKIE = $Cookie_String
	Return $COOKIE
EndFunc

Login('логин','пасс')
В чем ошибка?
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
Первым запросом получаем форму входа на форум:
Код:
<form id="guest_form" action="http://autoit-script.ru/index.php?PHPSESSID=00000000000000&amp;action=login2" method="post" accept-charset="UTF-8"  onsubmit="hashLoginPassword(this, '99999999999999999');">
	Пожалуйста, <a href="http://autoit-script.ru/index.php?PHPSESSID=1a4e4cc22d0f9318e00dd7f8e40422a4&amp;action=login">войдите</a> или <a href="http://autoit-script.ru/index.php?PHPSESSID=00000000000000000000000000&amp;action=register">зарегистрируйтесь</a>.

	<input type="text" name="user" size="10" />
	<input type="password" name="passwrd" size="10" />
	<select name="cookielength">
		<option value="60">1 час</option>
		<option value="1440">1 день</option>
		<option value="10080">1 неделя</option>
		<option value="43200">1 месяц</option>
		<option value="-1" selected="selected">Навсегда</option>
	</select>
	<input type="submit" value="Войти" />

	Войти
	<input type="hidden" name="hash_passwrd" value="" />
</form>
данные, необходимые для обработки формы:
1. user
2. passwrd
3. cookielength (выбирай любое значение из списка, например, -1)
4. hash_passwrd

Вот с четвертым пунктом проблемки :D, нужно где-то брать это значение.
Это как раз тот случай, про который говорил misha497 - надо копать код js
Смотрим заголовок формы:
Код:
orm id="guest_form" action="http://autoit-script.ru/index.php?PHPSESSID=0000000000000000000000&amp;action=login2" method="post" accept-charset="UTF-8"  onsubmit="hashLoginPassword(this, '999999999999999999999');"
Нас интересует hashLoginPassword(this, '9999999999999999999') - это функция на js, которая берет данные из формы (пароль и логин), смешивает с идентификатором сессии и выдает какую-то строку на выходе (это и есть hash_passwrd).

Открываем js с этой функцией - вот выдержка:
Код:
function hashLoginPassword(doForm, cur_session_id)
{
	//тут работа с браузером, нас не интересующая
	doForm.hash_passwrd.value = hex_sha1(hex_sha1(doForm.user.value.php_to8bit().php_strtolower() + doForm.passwrd.value.php_to8bit()) + cur_session_id);
	//тут еще всякая ненужная нам ерунда
}
Т.е. эта функция приводит имя пользователя к нижнему регистру, перекодирует в формат 8 бит, дописывает к нему пароль, перекодированный в 8 бит и дописывает ID сессии (он нам известен). При этом использует еще три функции:
hex_sha1
php_to8bit
php_strtolower
Последнюю можно заменить на StringLower(), а вот с остальными сложнее - там используется еще куча функций и мне, честно говоря, лень ковырять глубже :smile:

В общем, делай аналоги этих функций для Автоита, чтобы на выходе получить hash_passwrd и тогда авторизация пройдет.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
а выполнить этот код нельзя? без браузера, но системой
 

RUVATA

лучше один раз увидеть, чем десять раз услышать...
Сообщения
132
Репутация
38
axlwor [?]
а выполнить этот код нельзя? без браузера, но системой
Вам нужен локальный интерпретатор JavaScript ... (если работаете под *.nix системой, то качайте с github v8 движок на котором построен Google Chrome)...
Для Windows если не пойдет стандартным Script Host
можете воспользоваться скомпилированным NODE.js (хотя это конечно совсем не для ваших целей... но JavaScript исполняет)
(запускайте скрипт командной строкой из текущей папки \bin\ node.exe 'имя скрипта из той-же папки'js)

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

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
Нашел два способа для авторизации на нашем портале:
1. Нам понадобятся эти скрипты:
http://autoit-script.ru/Themes/default/scripts/sha1.js
http://autoit-script.ru/Themes/default/scripts/script.js
а из
Код:
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
		var smf_theme_url = "http://autoit-script.ru/Themes/RuNet";
		var smf_default_theme_url = "http://autoit-script.ru/Themes/default";
		var smf_images_url = "http://autoit-script.ru/Themes/RuNet/images";
		var smf_scripturl = "http://autoit-script.ru/index.php";
		var smf_iso_case_folding = false;
		var smf_charset = "UTF-8";
		var ajax_notification_text = "Загружается...";
		var ajax_notification_cancel_text = "Отменить";
	// ]]></script>
строчка: var smf_charset = "UTF-8";

Я скопировал всю эту кашу в файл и обозвал 1.js
немного переделал форму авторизации, чтобы она выдавала хэш от (имя+пароль+время сессии)
А дальше дело техники - создал объект _IECreateEmbedded() куда выгрузил форму авторизации и скрипт 1.js.
Итог:
Код:
#include <IE.au3>
$sLogin = 'username'
$sPassword = 'userpass'

Login($sLogin, $sPassword)

Func Login($login, $pass)
	$oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
    $oHTTP.Open('GET', 'http://autoit-script.ru/index.php') ; идем на главную страницу
    $oHTTP.Send('')
    $oHTTP.WaitForResponse
	$sHTML = $oHTTP.ResponseText
    $sCookies = $oHTTP.GetResponseHeader('Set-Cookie') ; получаем куку
	$sCookies = StringRegExpReplace($sCookies, '^([^;]+).*', '$1;') ; выдираем из нее PHPSESSID=.....
    $sSessionID = StringRegExpReplace($sHTML, "(?si).*?hashLoginPassword\(this,\s.([^']+).*", '$1') ; из HTML-кода получаем SessionId для js
	$sHash = GetHashedLoginPass($login, $pass, $sSessionID) ; на основании логина, пароля и SessionId получаем хэш
    $oHTTP.Open('POST', 'http://autoit-script.ru/index.php?action=login2') ; идем на форму авторизации
    $oHTTP.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded') ; без этого заголовка данные формы не передаются!
    $oHTTP.SetRequestHeader('Cookie', $sCookies) ; пихаем куку
    $oHTTP.Send('user=' & $login & '&passwrd=' & $pass & '&cookielength=-1&hash_passwrd=' & $sHash) ; передаем данные пользователя: имя, пароль, длительность сессии (-1 - навсегда) и хэш
    $oHTTP.WaitForResponse
	$sHTML = $oHTTP.ResponseText
;~ 	ConsoleWrite($sHTML & @CRLF)
	$oHTTP.Open('GET', 'http://autoit-script.ru/index.php?board=4.0') ; дальше идем куда хотим
    $oHTTP.SetRequestHeader('Cookie', $sCookies) ; не забываем про куку!
    $oHTTP.Send('')
    $oHTTP.WaitForResponse
	$sHTML = $oHTTP.ResponseText
	ConsoleWrite($sHTML & @CRLF)
EndFunc

Func GetHashedLoginPass($user, $passwd, $idsession)
	Local $oIE, $hGUI, $sHTM, $sPath, $hFile, $oSubmit, $oForm, $oHash
	$oIE = _IECreateEmbedded()
	$hGUI = GUICreate('', 640, 480)
	GUICtrlCreateObj($oIE, 5, 5, 630, 470)
	$sHTM = '<html>' & @CRLF
	$sHTM &= '	<script type="text/javascript" src="1.js"></script>' & @CRLF
	$sHTM &= '<body>' & @CRLF
	$sHTM &= '	<form id="guest_form" onsubmit="hashLoginPassword(this, ''' & $idsession & ''');return false;">' & @CRLF
	$sHTM &= '	<input type="text" name="user" size="10" value="' & $user & '"/>' & @CRLF
	$sHTM &= '	<input type="password" name="passwrd" size="10" value="' & $passwd & '"/>' & @CRLF
	$sHTM &= '	<select name="cookielength">' & @CRLF
	$sHTM &= '		<option value="60">1 час</option>' & @CRLF
	$sHTM &= '		<option value="1440">1 день</option>' & @CRLF
	$sHTM &= '		<option value="10080">1 неделя</option>' & @CRLF
	$sHTM &= '		<option value="43200">1 месяц</option>' & @CRLF
	$sHTM &= '		<option value="-1" selected="selected">Навсегда</option>' & @CRLF
	$sHTM &= '	</select>' & @CRLF
	$sHTM &= '	<input name="sub" type="submit" value="Войти" />
' & @CRLF
	$sHTM &= '	hash_passwrd :' & @CRLF
	$sHTM &= '	<input type="text" name="hash_passwrd" value="" />' & @CRLF
	$sHTM &= '</form>' & @CRLF
	$sHTM &= '</body>' & @CRLF
	$sHTM &= '</html>' & @CRLF
	$sPath = @ScriptDir & '\doc.html'
	$hFile = FileOpen($sPath, 2)
	FileWrite($hFile, $sHTM)
	FileClose($hFile)
	_IENavigate($oIE, $sPath)
	$oSubmit = _IEGetObjByName($oIE, 'sub')
	_IEAction($oSubmit, 'click')
	$oForm = _IEGetObjById($oIE, 'guest_form')
	$oHash = _IEFormElementGetObjByName($oForm, 'hash_passwrd')
	$sHash = _IEFormElementGetValue($oHash)
	GUIDelete($hGUI)
	FileDelete($sPath)
	Return $sHash
EndFunc

Этот способ не универсален - для каждого сайта придется переделывать форму.

2. Здесь понадобился сниффер HTTP трафика для получения куков при работе с порталом, когда вы уже авторизованы (в FireFox можно зайти в Инструменты->Настройки->Приватность->Показать куки и там посмотреть куки для сайта)
Пример:
Код:
$oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
$oHTTP.Open('GET', 'http://autoit-script.ru/index.php')
$sCookies = 'SMFCookie11=ну оооооооооооооооооочень длинная строка; '
$sCookies &= 'PHPSESSID=еще строка;'
$oHTTP.SetRequestHeader('Cookie', $sCookies)
$oHTTP.Send('')
$oHTTP.WaitForResponse
$sHTML = $oHTTP.ResponseText
ConsoleWrite($sHTML & @CRLF)
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Redline
Огромное спасибо! Код - то, что надо! Я и не думал что с куками все будет так сложно... Первый вариант понравился больше, его теперь и буду использовать. Еще раз всем спасибо!
 

ssvih-miaa

Новичок
Сообщения
41
Репутация
0
Всем привет!
Подскажите что делать с ответом в виде "‹ «V*ИI¬ЊПLQІ234¶01УQ*NNНKUІRJOМM
J*Х ZSо6% ‹ «V*ИI¬ЊПLQІ234127УQ*NNНKUІRJOМM
J*Х ўYЎУ% "
Код:
$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Open("POST", "")
$oHTTP.setTimeouts(5000, 5000, 15000, 15000)
$oHTTP.SetRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01")
$oHTTP.SetRequestHeader("Accept-Encoding", "gzip, deflate")
$oHTTP.SetRequestHeader("Accept-Charset","utf8");
$oHTTP.setRequestHeader("Content-Charset", "utf8");
$oHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
$oHTTP.SetRequestHeader("Connection", "keep-alive")
$oHTTP.SetRequestHeader("Content-Length", "50")
$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
$oHTTP.SetRequestHeader("Cookie", "Нет кукисов")
$oHTTP.SetRequestHeader("Host", "")
$oHTTP.SetRequestHeader("Referer","")
$oHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36")
$oHTTP.SetRequestHeader("X-Requested-With", "XMLHttpRequest")
$oHTTP.Send("game=chickenwars&action=create")
$oHTTP.WaitForResponse
    $sHTML = $oHTTP.ResponseBody
    $cookies = $oHTTP.GetAllResponseHeaders()
;~  $cookies=GetCookie($headers)
    MsgBox(0,'',$sHTML)
    FileWrite('qwe.txt',$sHTML)

Я делаю такой вот запрос в ответ должен получить кроме хедеров вот такую строку {"play_id":615957,"scene":"gamePlay"} а вместо неё непонятно что получаю (
Помогите!
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
ssvih-miaa
Эта тема решена!!!
Неужели трудно создать новую тему и там сформулировать вопрос?

Замените:
Код:
$sHTML = $oHTTP.ResponseBody

на
Код:
$sHTML = $oHTTP.ResponseText
 

ssvih-miaa

Новичок
Сообщения
41
Репутация
0
Garrett сказал(а):
ssvih-miaa
Эта тема решена!!!
Неужели трудно создать новую тему и там сформулировать вопрос?

Замените:
Код:
$sHTML = $oHTTP.ResponseBody

на
Код:
$sHTML = $oHTTP.ResponseText


Изначально так и было!
Не решает суть вопроса! Получаю в ответ непонятные символы!
 

Вложения

  • 22,4 КБ Просмотры: 27
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
ssvih-miaa
Попробуйте проверить кодировку. Вполне возможно, что проблема именно в ней. Где-то была библиотека Encoding.au3 (быстро находится), поиграйтесь с ее функциями, сделайте запрос из браузера и посмотрите кодировку ответа. К сожалению, сейчас сказать точнее не могу, ПК в ремонте.

OffTopic:
А по-хорошему , нужно было создать новую тему, сюда Ваш вопрос никак не относится. И ответ получили бы быстрее.
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Если это первый запрос, попробуйте так.
Код:
$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Open("POST", "")
$oHTTP.SetRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01")
$oHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
$oHTTP.SetRequestHeader("Connection", "keep-alive")
$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
$oHTTP.SetRequestHeader("Host", "")
$oHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36")
$oHTTP.Send("game=chickenwars&action=create")
$oHTTP.WaitForResponse
$sHTML = $oHTTP.ResponseText
$cookies = $oHTTP.GetAllResponseHeaders()
MsgBox(0,'',$sHTML)
;~ FileWrite('qwe.txt',$sHTML)


P.S. IMHO через MSXML2.XMLHTTP.6.0 будет удобнее и правильнее, так как у вас работа с ajax.
 

ssvih-miaa

Новичок
Сообщения
41
Репутация
0
Garrett сказал(а):
Если это первый запрос, попробуйте так.
Код:
$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Open("POST", "")
$oHTTP.SetRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01")
$oHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
$oHTTP.SetRequestHeader("Connection", "keep-alive")
$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
$oHTTP.SetRequestHeader("Host", "")
$oHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36")
$oHTTP.Send("game=chickenwars&action=create")
$oHTTP.WaitForResponse
$sHTML = $oHTTP.ResponseText
$cookies = $oHTTP.GetAllResponseHeaders()
MsgBox(0,'',$sHTML)
;~ FileWrite('qwe.txt',$sHTML)


P.S. IMHO через MSXML2.XMLHTTP.6.0 будет удобнее и правильнее, так как у вас работа с ajax.
Спасибо за PS помогло получил более или менее читабельный ответ "{"errorMsg":"\u0423 \u0432\u0430\u0441 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0417\u043e\u043b\u043e\u0442\u043e"}"
Дальше уже сам разберусь надеюсь! Еще раз большое спасибо!
 
Верх