Что нового

TCP: получение cookie и дальнейшая их отправка

Andrei7

Новичок
Сообщения
72
Репутация
3
Всем привет.
не могли бы подсказать, в чем ошибка -
Код:
$sDomain = '127.0.0.1' 
$iPort = 80 
$sParameters = 'fo=75&ot=%CF%F'

$sRequest = 'POST 127.0.0.1/te.php HTTP/1.1' & @CRLF 
$sRequest &= 'Connection: close' & @CRLF 
$sRequest &= 'Accept: */*' & @CRLF
$sRequest &= 'User-Agent: Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.10.229 Version/11.60' & @CRLF
$sRequest &= 'Host: 127.0.0.1' & @CRLF
$sRequest &= 'Content-Type: application/x-www-form-urlencoded' & @CRLF 
$sRequest &= 'Content-Length: ' & StringLen($sParameters) & @CRLF 
$sRequest &= @CRLF 
$sRequest &= $sParameters 

If TCPStartup() = 0 Then 
    MsgBox(16, 'Ошибка', 'Не удалось запустить TCP/UDP-службы.')
    Exit 1
EndIf

$sIP = TCPNameToIP($sDomain) 

If @error Then
    MsgBox(16, 'Ошибка', 'Не удалось получить ip-адрес сервера.')
    Exit 2
EndIf

$iSocket = TCPConnect($sIP, $iPort) 

If @error Then
    MsgBox(16, 'Ошибка', 'Не удалось соедениться с сервером.')
    Exit 3
EndIf

TCPSend($iSocket, $sRequest) 

If @error Then
    MsgBox(16, 'Ошибка', 'Не удалось отправить запрос.')
    Exit 4
EndIf

$sData = ''
$iTimer = TimerInit() 

Do
    $sBuffer = TCPRecv($iSocket, 1024) 
    $iError = @error
    If Not $sBuffer = '' Then 
        $sData &= $sBuffer 
        $iTimer = TimerInit() 
    EndIf
Until $iError <> 0 Or TimerDiff($iTimer) > 5000 
;TCPShutdown()

;TCPCloseSocket($iSocket)
;TCPShutdown()
    MsgBox(16,'', $sData)
$cookies = StringRegExp($sData, '((?si)PHPSESSID=.*?);', 1) 
$buy= StringRegExp($sData, '((?si).wb=\d+.*?).>', 1)
If @error Then
    MsgBox(16, 'Ошибка', 'Полученные данные неверны.')
    Exit 5
EndIf

MsgBox(16, 'Ошибка', $cookies[0])

$sRequest=''
$iSocket=''

;Запрос, который будет отправлен серверу
$sRequest = "GET 127.0.0.1/te.php&id=75&k=n HTTP/1.1" & @CRLF 
$sRequest &= 'Connection: close' & @CRLF 
$sRequest &= 'Accept: */*' & @CRLF
$sRequest &= 'User-Agent: Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.10.229 Version/11.60' & @CRLF
$sRequest &= 'Cookie: '&$cookies & @CRLF
$sRequest &= 'Host: 127.0.0.1' & @CRLF
$sRequest &=  @CRLF

$iSocket = TCPConnect($sIP, $iPort) 

If @error Then
    MsgBox(16, 'Ошибка', 'Не удалось соедениться с сервером.')
    Exit 3
EndIf
TCPSend($iSocket, $sRequest) 

If @error Then
    MsgBox(16, 'Ошибка', 'Не удалось отправить запрос.')
    Exit 4
EndIf

$sData = ''
$iTimer = TimerInit() 

Do
    $sBuffer = TCPRecv($iSocket, 1024) 
    $iError = @error
    If Not $sBuffer = '' Then 
        $sData &= $sBuffer 
        $iTimer = TimerInit()
    EndIf
Until $iError <> 0 Or TimerDiff($iTimer) > 5000 

TCPCloseSocket($iSocket)
TCPShutdown()

;$aData = StringRegExp($sData, '(?s)(.*?)\r\n\r\n(.*)', 3) 

;If @error Then
   ; MsgBox(16, 'Ошибка', 'Полученные данные неверны.')
   ; Exit 5
;EndIf

MsgBox(0, ' :'(', $sData)

собственно шлю POST запрос, получаю куку, далее шлю GET запрос с этой кукой, в ответ приходит новая кука, и сервер пишет, что куки нет.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
http://autoit-script.ru/index.php/topic,656.0.html
 
Автор
A

Andrei7

Новичок
Сообщения
72
Репутация
3
WinHttp падает там где надо, и не надо. Я писал на нём.
Мне советовали тут на форуме TCP, так как ошибок меньше в нём. Поэтому IE, WinHttp, и т.п. не предлагать.
 
Автор
A

Andrei7

Новичок
Сообщения
72
Репутация
3
с куками проблема. ошибки выдаёт. вот предыдущая тема - http://autoit-script.ru/index.php/topic,8787.html .
Реализовал всё по другому :smile:


:IL_AutoIt_1:



И никто не увидел ошибку в коде? как и я ;)
 
Верх