Что нового

[Сеть, интернет] пытаюсь отправить запрос по TCP но в ответ ни чего не приходит

andrywolf

Новичок
Сообщения
5
Репутация
0
! у меня вопрос по autoit
пытаюсь отправить запрос по TCP но в ответ ни чего не приходит !!!

Текст запросов перехватил сниффером. Через браузер на оба запроса сервер отвечает исправно, а когда посылаю вручную с помощью кода представленого ниже, первый запрос присылает ответ а второй нет!

Код:
#include <GUIConstantsEx.au3>

$sDomain = '192.168.46.77' ;домен или ip-адрес
$iPort = 8999 ;порт
$sParameters = 'action=answer&Username=XXX&Domain=mail.ru&Submit_PasswordAnswer=1&answer=***'
;Запрос, который будет отправлен серверу
$sRequest1 = 'POST http://192.168.46.30/SNK/LogOn.aspx HTTP/1.1' & @CRLF ;Request-строка
$sRequest1 &= 'User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_29' & @CRLF
$sRequest1&= 'Host: 192.168.46.30' & @CRLF
$sRequest1 &= 'Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2' & @CRLF
$sRequest1 &= 'Proxy-Connection: keep-alive' & @CRLF ;au3browser' & @CRLF
$sRequest1&= 'Content-type: application/x-www-form-urlencoded' & @CRLF
$sRequest1 &= 'Content-Length: 19' & @CRLF
$sRequest1 &=  @CRLF 
$sRequest1 &= 'Name=Km&Password=A' & @CRLF ;au3browser' & @CRLF


;Запрос, который будет отправлен серверу
$sRequest = 'GET http://192.168.46.30/SNK/Param.aspx HTTP/1.1' & @CRLF ;Request-строка
$sRequest &= 'User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_29' & @CRLF
$sRequest &= 'Host: 192.168.46.30' & @CRLF
$sRequest &= 'Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2' & @CRLF
$sRequest &= 'Proxy-Connection: keep-alive' & @CRLF ;au3browser' & @CRLF

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

$MainSocket = TCPListen($sIP, $iPort, 100)
If $MainSocket = -1 Then Exit



$sIP = TCPNameToIP($sDomain) ;получаем ip-адрес

If @error Then
    MsgBox(16, 'Ошибка', 'Не удалось получить ip-адрес сервера.')
    Exit 2
EndIf
 ; MsgBox(1, 'Создание завершено', "" & $sIP & "")
$iSocket = TCPConnect($sIP, $iPort) ;соединяемся с сервером


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

TCPSend($iSocket, $sRequest) ;отправляем сообщение

If @error Then
    MsgBox(16, 'Ошибка', 'Не удалось отправить запрос.')
    Exit 4
EndIf
    Sleep(1000)
    ProgressSet( 33, "Этап 1. Регистрация Аккаунта")
  $sBuffer3=''  
     MsgBox(1, 'sBuffer' , "" &$sBuffer3  & "")
$sData = ''
$iTimer = TimerInit() ;запускаем таймер

Do
    $sBuffer3 = TCPRecv($iSocket, 1000,0) ;получаем часть сообщения сервера
	 ;MsgBox(1, 'Создание завершено', "" &$iSocket & "")
    $iError = @error
	  MsgBox(1, 'sBuffer' , "" &$sBuffer3  & "")
    If Not $sBuffer3 = '' Then ;если удалось получить сообщение
	   MsgBox(1, 'sBuffer1' , "" &BinaryToString($sBuffer3 ) & "")
        $sData &= $sBuffer3 ;сохраняем полученное сообщение
		  ;MsgBox(1, 'Создание !!!!!!!!!!!!', "" &$sData & "")
		  
		  
		  
		  
 MsgBox(1, 'Создание завершено', "6")
		
		
	 EndIf
	 Until $iError <> 0 Or TimerDiff($iTimer) > 10000 ;если при получении сообщения произошла ошибка (данные получены, соединение закрыто) или в течении 5 секунд ничего не было получено, выход из цикла




TCPCloseSocket($iSocket)
TCPShutdown()



;$aData = StringRegExp($sData, '(?s)(.*?)\r\n\r\n(.*)', 3) ;отделяем http-заголовки от тела сообщения ('заголовки' & @CRLF & @CRLF & 'тело')

If @error Then
   MsgBox(16, 'Ошибка', 'Полученные данные неверны.')
  MsgBox(16, 'Создание завершено', 'Идет подтверждение.')
    Sleep(100)
    Exit 5
EndIf



Вот такой запрос присылает ответ:
Код:
;Запрос, который будет отправлен серверу
$sRequest1 = 'POST http://192.168.46.30/SNK/LogOn.aspx HTTP/1.1' & @CRLF ;Request-строка
$sRequest1 &= 'User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_29' & @CRLF
$sRequest1&= 'Host: 192.168.46.30' & @CRLF
$sRequest1 &= 'Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2' & @CRLF
$sRequest1 &= 'Proxy-Connection: keep-alive' & @CRLF ;au3browser' & @CRLF
$sRequest1&= 'Content-type: application/x-www-form-urlencoded' & @CRLF
$sRequest1 &= 'Content-Length: 19' & @CRLF
$sRequest1 &=  @CRLF 
$sRequest1 &= 'Name=Km&Password=A' & @CRLF ;au3browser' & @CRLF


а такой нет:

Код:
;Запрос, который будет отправлен серверу
$sRequest = 'GET http://192.168.46.30/SNK/Param.aspx HTTP/1.1' & @CRLF ;Request-строка
$sRequest &= 'User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_29' & @CRLF
$sRequest &= 'Host: 192.168.46.30' & @CRLF
$sRequest &= 'Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2' & @CRLF
$sRequest &= 'Proxy-Connection: keep-alive' & @CRLF ;au3browser' & @CRLF
 
Автор
A

andrywolf

Новичок
Сообщения
5
Репутация
0
а такой код вывел все как надо!!!
не пойму в чем проблема??????
может кто подскажет в чем разница???

Код:
$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
    $oHTTP.Open("POST", 'http://192.168.46.30/SNK/Param.aspx')
    $oHTTP.setTimeouts(5000, 5000, 15000, 15000)
    $oHTTP.SetRequestHeader("User-Agent", "Mozilla/4.0 (Windows XP 5.1)" & _
                                                                            "Java/1.6.0_29")
    $oHTTP.SetRequestHeader("Host", "192.168.46.30")
    $oHTTP.SetRequestHeader("Accept", "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2")
    $oHTTP.SetRequestHeader("Proxy-Connection","keep-alive")
       $oHTTP.Send()
    $oHTTP.WaitForResponse

    $s_ResponseText = $oHTTP.ResponseBody
    ConsoleWrite($s_ResponseText & @CRLF)
 

winstan

Эксплотатор)
Сообщения
406
Репутация
79
Сравни что шлёшь ты а вот что шлёт обьект "WinHttp.WinHttpRequest.5.1"


Код:
POST /SNK/Param.aspx HTTP/1.1
Connection: Keep-Alive
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Host: 192.168.46.30
User-Agent: Mozilla/4.0 (Windows XP 5.1)"Java/1.6.0_29
Proxy-Connection: keep-alive
Content-Length: 0
 
Автор
A

andrywolf

Новичок
Сообщения
5
Репутация
0
ну да Get и Post перепутал)))
ну так почему Post возвращает данные а Get нет???
 

winstan

Эксплотатор)
Сообщения
406
Репутация
79
Не в методах проблема а в обезательных строках


Добавлено:
Сообщение автоматически объединено:

Код:
Поток № 1Открыт
Поток № 1Отправка [Начало]>>>>>>>>>>===========================
GET http://192.168.46.30/SNK/Param.aspx HTTP/1.1
User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_29
Host: 192.168.46.30
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Proxy-Connection: keep-alive

Поток № 1Отправка [Конец] >>>>>>>>>>===========================
Поток № 1Открыт
Поток № 1Отправка [Начало]>>>>>>>>>>===========================
POST http://192.168.46.30/SNK/Param.aspx HTTP/1.1
User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_29
Host: 192.168.46.30
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Proxy-Connection: keep-alive

Поток № 1Отправка [Конец] >>>>>>>>>>===========================
Поток № 1Открыт
Поток № 1Отправка [Начало]>>>>>>>>>>===========================
POST http://192.168.46.30/SNK/LogOn.aspx HTTP/1.1
User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_29
Host: 192.168.46.30
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Proxy-Connection: keep-alive
Content-type: application/x-www-form-urlencoded
Content-Length: 19

Name=Km&Password=A

Поток № 1Отправка [Конец] >>>>>>>>>>===========================
Поток № 1 Приём [Начало]<<<<<<<<<<=============================
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 31 Jan 2012 14:08:17 GMT
Content-Type: text/html
Content-Length: 178
Connection: close
Location: http://yandex.ru/SNK/LogOn.aspx

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>

Поток № 1 Приём [Конец] <<<<<<<<<<=============================


Добавлено:
Сообщение автоматически объединено:

Код:
$sRequest = 'POST http://192.168.46.30/SNK/Param.aspx HTTP/1.1' & @CRLF ;Request-строка
$sRequest &= 'User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_29' & @CRLF
$sRequest &= 'Host: 192.168.46.30' & @CRLF
$sRequest &= 'Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2' & @CRLF
$sRequest &= 'Proxy-Connection: keep-alive' & @CRLF ;au3browser' & @CRLF
$sRequest &=  @CRLF; добавил это и заработала

Метод научного тыка ;D
 
Автор
A

andrywolf

Новичок
Сообщения
5
Репутация
0
ты имеешь в виду что в моем запросе не хватало строк:
Код:
Content-type: application/x-www-form-urlencoded
Content-Length: 19

если да то почему такого набора строк хватало в запросе что посылал браузер который я перехватил снифером??? вот этот перехвачены запрос:
Код:
GET http://192.168.46.30/SNK/Param.aspx HTTP/1.1
User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.6.0_29
Host: 192.168.46.30
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Proxy-Connection: keep-alive
как видишь нету ни Content-type ни Content-Length


Добавлено:
Сообщение автоматически объединено:



УРА !!!!!!!!!!
мне тоже помогла последняя строка
Код:
$sRequest &=  @CRLF; добавил это и заработала

Большое спасибо!!!!!
 
Верх