Что нового

Отправка регистрационной формы методом POST запроса.

astati

Новичок
Сообщения
145
Репутация
4
Это POST запрос на отправку регистрационной формы на сайт. http://s4.ru.alaplaya.net
Помогите чем сможете.
Код:
POST /users HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, 

application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://s4.ru.alaplaya.net/users/new
Accept-Language: ru-RU
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; 

.NET CLR 3.0.30729; InfoPath.3; .NET4.0C; .NET4.0E)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: s4.ru.alaplaya.net
Content-Length: 451
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: __utma=1.834228154.1317458942.1321347332.1321359881.11; __utmz=1.1318512453.9.9.utmcsr=z.ru|utmccn=(referral)|

utmcmd=referral|utmcct=/forum/showthread.php; PAPVisitorId=261dcfb1166ffe798bd010QjR4yyfdRt; 

_alaplaya_session=BAh7BjoPc2Vzc2lvbl9pZCIlZDIwMDljYTU5MTM2M2U0NDE4ZTA3NDc0ZmE4NjA0NTA%3D--

9ee55c29561798457c5c0661ff9fa1fe427e19f3; __utmc=1

user%5Blogin%5D=vevevero&user%5Bpassword%5D=0000&user%5Bpassword_confirmation%5D=0000&user%5Bnickname

%5D=vevevero&user%5Bemail%[email protected]&user%5Bemail_confirmation%[email protected]&user%5Bbirthday%283i

%29%5D=1&user%5Bbirthday%282i%29%5D=1&user%5Bbirthday%281i%29%5D=1970&user%5Bgender%5D=m&user

%5Bcountry_id%5D=36&user%5Bmedia_code_id%5D=8&user%5Bnewsletter%5D=0&user%5Bterms_of_service

%5D=0&user%5Bterms_of_service%5D=1&user%5Busedform%5D=usernew

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 15 Nov 2011 12:22:46 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=60
Vary: Accept-Encoding
Set-Cookie: a_mpl_id=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT
Set-Cookie: 

_alaplaya_session=BAh7BzoPc2Vzc2lvbl9pZCIlZDIwMDljYTU5MTM2M2U0NDE4ZTA3NDc0ZmE4NjA0NTA6FmNyZWF0ZV

91c2VyX2VtYWlsaQc%3D--2b7a6b4b0fc555e43532d90f7ea25b8b933c4a96; domain=.alaplaya.net; path=/; HttpOnly
Status: 200
ETag: "f9c5ad24703a10a76e81146d524c22cc"
X-Runtime: 2886
Cache-Control: private, max-age=0, must-revalidate
Content-Encoding: gzip
Писал по примеру: Но чувствую что я ни чего не понимаю в нем :(
Код:
$sDomain = '195.122.162.50' ;домен или ip-адрес
$iPort = 80 ;порт
$sParameters = 'param1=value1&param2=value2' ;Параметры

;Запрос, который будет отправлен серверу
$sRequest = 'POST /users HTTP/1.1' & @CRLF ;Request-строка
;$sRequest &= 'Connection: close' & @CRLF ;Заголовки
$sRequest &= 'Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*' & @CRLF
;$sRequest &= 'x-prototype-version: 1.7' & @CRLF
$sRequest &= 'Referer: http://s4.ru.alaplaya.net/users/new' & @CRLF
$sRequest &= 'Accept-Language: ru-RU' & @CRLF
$sRequest &= 'User-Agent: au3browser' & @CRLF
;$sRequest &= 'x-requested-with: XMLHttpRequest' & @CRLF
$sRequest &= 'Content-Type: application/x-www-form-urlencoded' & @CRLF ;Указываем заголовок Content-Type (необходимо для POST-запроса)
$sRequest &= 'Accept-Encoding: gzip, deflate' & @CRLF
$sRequest &= 'Host: s4.ru.alaplaya.net' & @CRLF
$sRequest &= 'Content-Length: 451 ' & StringLen($sParameters) & @CRLF ;Указываем заголовок Content-Length (необходимо для POST-запроса)
$sRequest &= 'Connection: Keep-Alive' & @CRLF
$sRequest &= 'Cache-Control: no-cache' & @CRLF
$sRequest &= 'Cookie:__utma=1.834228154.1317458942.1321347332.1321359881.11; __utmz=1.1318512453.9.9.utmcsr=zhyk.ru|utmccn=(referral)|utmcmd=referral|utmcct=/forum/showthread.php; PAPVisitorId=261dcfb1166ffe798bd010QjR4yyfdRt; _alaplaya_session=BAh7BjoPc2Vzc2lvbl9pZCIlZDIwMDljYTU5MTM2M2U0NDE4ZTA3NDc0ZmE4NjA0NTA%3D--9ee55c29561798457c5c0661ff9fa1fe427e19f3; __utmc=1      user%5Blogin%5D='&GUICtrlRead($Input1)&'&user%5Bpassword%5D='&GUICtrlRead($Input2)&'&user%5Bpassword_confirmation%5D='&GUICtrlRead($Input2)&'&user%5Bnickname%5D='&GUICtrlRead($Input1)&'&user%5Bemail%5D='&GUICtrlRead($Input5)&'&user%5Bemail_confirmation%5D='&GUICtrlRead($Input5)&'&user%5Bbirthday%283i%29%5D='&GUICtrlRead($Combo1)&'&user%5Bbirthday%282i%29%5D='&GUICtrlRead($Combo2)&'&user%5Bbirthday%281i%29%5D='&GUICtrlRead($Combo3)&'&user%5Bgender%5D=m&user%5Bcountry_id%5D=36&user%5Bmedia_code_id%5D=8&user%5Bnewsletter%5D=0&user%5Bterms_of_service%5D=0&user%5Bterms_of_service%5D=1&user%5Busedform%5D=usernew' & @CRLF
$sRequest &= @CRLF ;Заголовки от параметров отделяет пустая строка
$sRequest &= $sParameters ;Параметры в запросе

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

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

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 ;если при получении сообщения произошла ошибка (данные получены, соединение закрыто) или в течении 5 секунд ничего не было получено, выход из цикла

TCPCloseSocket($iSocket)
TCPShutdown()

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

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

MsgBox(0, 'Data', $aData[1])
EndIf
WEnd
 
Автор
A

astati

Новичок
Сообщения
145
Репутация
4
Re: Помогите с POST запросом.

Так вот по нему я и писал.
Выводится это. ток я не понял что это?
 

BIOS

Жизнь - игра. График - супер, но сюжет - хреновый.
Сообщения
173
Репутация
69
Re: Помогите с POST запросом.

Замени
Код:
$sRequest &= 'Content-Length: 451 ' & StringLen($sParameters) & @CRLF ;Указываем заголовок Content-Length (необходимо для POST-запроса)

на
Код:
$sRequest &= 'Content-Length: ' & StringLen($sParameters) & @CRLF ;Указываем заголовок Content-Length (необходимо для POST-запроса)


+
Код:
'user%5Blogin%5D='&GUICtrlRead($Input1)&'&user%5Bpassword%5D='&GUICtrlRead($Input2)&'&user%5Bpassword_confirmation%5D='&GUICtrlRead($Input2)&'&user%5Bnickname%5D='&GUICtrlRead($Input1)&'&user%5Bemail%5D='&GUICtrlRead($Input5)&'&user%5Bemail_confirmation%5D='&GUICtrlRead($Input5)&'&user%5Bbirthday%283i%29%5D='&GUICtrlRead($Combo1)&'&user%5Bbirthday%282i%29%5D='&GUICtrlRead($Combo2)&'&user%5Bbirthday%281i%29%5D='&GUICtrlRead($Combo3)&'&user%5Bgender%5D=m&user%5Bcountry_id%5D=36&user%5Bmedia_code_id%5D=8&user%5Bnewsletter%5D=0&user%5Bterms_of_service%5D=0&user%5Bterms_of_service%5D=1&user%5Busedform%5D=usernew'

И есть те самые
Код:
$sParameters
, длину которых нада указывать в пункте выше
Параметры от заголовков отделяются двумя
Код:
@CRLF
 
Автор
A

astati

Новичок
Сообщения
145
Репутация
4
Re: Помогите с POST запросом.

А как мне задать Эти параметры я не совсем понимаю :(
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: Помогите с POST запросом.

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Помогите с POST запросом." - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, Администратор форума.
 
Автор
A

astati

Новичок
Сообщения
145
Репутация
4
Creator
тему переименовал, но ты видимо не соизволил проверить :(
Люди обьясните как параметры задать.
 

BIOS

Жизнь - игра. График - супер, но сюжет - хреновый.
Сообщения
173
Репутация
69
Код:
$sDomain = '195.122.162.50' ;домен или ip-адрес
$iPort = 80 ;порт
$sParameters = 'user%5Blogin%5D='&GUICtrlRead($Input1)&'&user%5Bpassword%5D='&GUICtrlRead($Input2)&'&user%5Bpassword_confirmation%5D='&GUICtrlRead($Input2)&'&user%5Bnickname%5D='&GUICtrlRead($Input1)&'&user%5Bemail%5D='&GUICtrlRead($Input5)&'&user%5Bemail_confirmation%5D='&GUICtrlRead($Input5)&'&user%5Bbirthday%283i%29%5D='&GUICtrlRead($Combo1)&'&user%5Bbirthday%282i%29%5D='&GUICtrlRead($Combo2)&'&user%5Bbirthday%281i%29%5D='&GUICtrlRead($Combo3)&'&user%5Bgender%5D=m&user%5Bcountry_id%5D=36&user%5Bmedia_code_id%5D=8&user%5Bnewsletter%5D=0&user%5Bterms_of_service%5D=0&user%5Bterms_of_service%5D=1&user%5Busedform%5D=usernew' ;Параметры

;Запрос, который будет отправлен серверу
$sRequest = 'POST /users HTTP/1.1' & @CRLF ;Request-строка
;$sRequest &= 'Connection: close' & @CRLF ;Заголовки
$sRequest &= 'Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*' & @CRLF
;$sRequest &= 'x-prototype-version: 1.7' & @CRLF
$sRequest &= 'Referer: http://s4.ru.alaplaya.net/users/new' & @CRLF
$sRequest &= 'Accept-Language: ru-RU' & @CRLF
$sRequest &= 'User-Agent: au3browser' & @CRLF
;$sRequest &= 'x-requested-with: XMLHttpRequest' & @CRLF
$sRequest &= 'Content-Type: application/x-www-form-urlencoded' & @CRLF ;Указываем заголовок Content-Type (необходимо для POST-запроса)
$sRequest &= 'Accept-Encoding: gzip, deflate' & @CRLF
$sRequest &= 'Host: s4.ru.alaplaya.net' & @CRLF
$sRequest &= 'Content-Length: ' & StringLen($sParameters) & @CRLF ;Указываем заголовок Content-Length (необходимо для POST-запроса)
$sRequest &= 'Connection: Keep-Alive' & @CRLF
$sRequest &= 'Cache-Control: no-cache' & @CRLF
$sRequest &= @CRLF ;Заголовки от параметров отделяет пустая строка
$sRequest &= $sParameters ;Параметры в запросе

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

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

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 ;если при получении сообщения произошла ошибка (данные получены, соединение закрыто) или в течении 5 секунд ничего не было получено, выход из цикла

TCPCloseSocket($iSocket)
TCPShutdown()

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

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

MsgBox(0, 'Data', $aData[1])
EndIf
WEnd
 
Автор
A

astati

Новичок
Сообщения
145
Репутация
4
Creator
как вы оставляете часто свои ответы без коментариев - я тож воспользуюсь этим правом.

Код:
[color=black][b][SIZE=3]BIOS[/SIZE][/b][/color]
Чувак ты реально монстр. Твой код прет. да еще так как мне нужно.Вот чуть-чуть подкручу и вообще шоколад будет :smile:
держи +1

P.S. ток после тебя более менее стал понимать POST запрос.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
astati [?]
как вы оставляете часто свои ответы без коментариев - я тож воспользуюсь этим правом.
При чём здесь комментарий, я не понял о чём речь, что я должен был проверять, скрипт?

P.S.
И не нужно обижаться на предупреждения, на форуме есть правила которые должны соблюдать все.
 
Автор
A

astati

Новичок
Сообщения
145
Репутация
4
Я просто думал что ваше сообщение будет снято после того как вы проверите, что я переименовал тему.
Я не обижаюсь, но весь день ждать... А ваше последние сообщение(предупреждение )могло дезорентировать того кто стал бы читать тему.

p.s. я думаю ненадо дальше продолжать спор(флуд). т.к. или мы полностью испортим тему. или кто повыше даст мне РО или бан. Я понял свою некоректность в сообщение, но как говорят: сделаного не воротишь. :smile:
 

BIOS

Жизнь - игра. График - супер, но сюжет - хреновый.
Сообщения
173
Репутация
69
astati [?]
P.S. ток после тебя более менее стал понимать POST запрос.
OffTopic:
Если тебе в работе частенько пригодится взаимодействие с подобными делами - могу провести быстрый ликбез, но это уже в АСЮ
 

SyDr

Сидра
Сообщения
651
Репутация
158
astati, в предупреждении написано старое название темы. Поэтому, если кто-то зайдёт в тему, он скорее всего поймёт, что автор темы прислушался к предупреждению и переименовал её.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
astati [?]
Я просто думал что ваше сообщение будет снято после того как вы проверите, что я переименовал тему.
Предупреждения не снимаются, они служат напоминанием о том, что на форуме следят за порядком, и это во благо всех.

OffTopic:
или кто повыше даст мне РО или бан
Кто повыше? :laugh:
Выше уже некуда :beer:.
 
Верх