Что нового

[Сеть, интернет] Авторизация на сервере (отправка/приём http запросов при помощи TCP функций)

Nelsy

Знающий
Сообщения
35
Репутация
8
Нашел видео на ЮТуб как реализовать Авторизацию при помощи TCP.
Зделал как описано на видео, и вроде как все работает но понять не могу почему сервер в ответе не присылает кукисы. При проделовании тех же действий только руками в FireFox - сервер выдает куки.
Вопрос Что нужно изменить в запросе POST чтоб сервер выдавал кукисы?
Решение дописать в запрос строку Content-Type: application/x-www-form-urlencoded
Код:
'Connection: keep-alive' & @CRLF & _
'Content-Type: application/x-www-form-urlencoded' & @CRLF & _
'Content-Length: ' & StringLen($sPost) & @CRLF & @CRLF & $sPost
Код:
$quellcode = TCPRequest('195.82.146.114','login.rutracker.org','forum/login.php')
FileWrite(@ScriptDir & '\source.html', $quellcode)

Func TCPRequest($sIp, $sHost, $sSite = "", $iMaxTime = 10000)
	Local $sPacket, $iSocket, $iTimer, $sPost
	$sPost	=	'login_username=xxxxxx&login_password=xxxxxx&login=xxxxxxxxxxxx'

	$sPacket =	'POST /' & $sSite & ' HTTP/1.1' & @CRLF & _
				'Host: ' & $sHost & @CRLF & _
				'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12' & @CRLF & _
				'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' & @CRLF & _
				'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3' & @CRLF & _
				'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7' & @CRLF & _
				'Keep-Alive: 115' & @CRLF & _
				'Connection: keep-alive' & @CRLF & _
				'Content-Length: ' & StringLen($sPost) & @CRLF & @CRLF & $sPost

	TCPStartup()
	If @error Then Return SetError(1,0,"")
	$iSocket = TCPConnect($sIp, 80)
	If @error Then Return SetError(2,0,"")
	TCPSend($iSocket, $sPacket)
	If @error Then Return SetError(3,0,"")
	$iTimer = TimerInit()
	Do
		$sRecv = TCPRecv($iSocket, 1024)
		If TimerDiff($iTimer) > $iMaxTime Then Return SetError(4,0,"")
	Until $sRecv <> ""
	Do
		$sRecv &= TCPRecv($iSocket, 1024)
	Until @error Or StringInStr($sRecv, '</html>')
	TCPCloseSocket($iSocket)
	TCPShutdown()
	Return $sRecv
EndFunc

_http://www.youtube.com/profile?user=1AMrK1#p/u/23/Yvn1xkzmfw8
 
Верх