Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Пытаюсь написать бота для игры ВКонтакте


Автор: Sice 22.1.2011, 13:41
Ребята, пытаюсь написать бота для игры ВКонтакте (этой - http://vkontakte.ru/app1175378)

Не получается авторизироваться никак.. 

вот код:
Код

Private Sub Command1_Click()
On Error Resume Next
Winsock1.Close
Winsock1.Connect "gorodok.playflock.com", 80
End Sub

Private Sub Winsock1_Connect()
Dim Leng As String, Header1 As String
Dim Length As Integer
On Error Resume Next
Leng = "?viewer_id=МОЙ_АЙДИ&auth=КЛЮЧf&method=authorize"
Length = Len(Leng)
Header1 = "POST /game.php? HTTP/1.1" & vbCrLf
Header1 = Header1 & "Content-Type: application/x-www-form-urlencoded" & vbCrLf
Header1 = Header1 & "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" & vbCrLf
Header1 = Header1 & "Host: gorodok.playflock.com" & vbCrLf
Header1 = Header1 & "Content-Length: " & Length & vbCrLf
Header1 = Header1 & "Connection: Keep-Alive" & vbCrLf
Header1 = Header1 & "Cache-Control: no-cache" & vbCrLf & vbCrLf
Winsock1.SendData Header1 & Leng
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
On Error Resume Next
Winsock1.GetData Data
Label1.Caption = Data
End Sub


Приходит ответ от сервера
Код

TP/1.1 200 OK
Server: nginx
Date: Sat, 22 Jan 2011 10:36:15 GMT
Content-Type: text/xml
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=60

81
<?xml version="1.0" encoding="utf-8"?>
<error>
<code>2</code>
<message>Not authorized</message>
<time>1295692575</time>
</error>



вот отчет сниффера:
http://s015.radikal.ru/i333/1101/e8/3c2517c41fa6.jpg

Подскажите что не так делаю пожалуйста

Автор: iff 22.1.2011, 14:26
А где же само тело POST-запроса?

Автор: Sice 23.1.2011, 13:09
Цитата(iff @ 22.1.2011,  14:26)
А где же само тело POST-запроса?

В Header1 или я чего-то не понимаю ?

Автор: iff 23.1.2011, 22:00
Код

POST /send-message.html HTTP/1.1
Host: mail.example.com
Referer: http://mail.example.com/send-message.html
User-Agent: BrowserForDummies/4.67b
Content-Type: multipart/form-data; boundary="Asrf456BGe4h"
Content-Length: (суммарный объём включая дочерние заголовки)
Connection: keep-alive
Keep-Alive: 300
(пустая строка)
(отсутствующая преамбула)
--Asrf456BGe4h
Content-Disposition: form-data; name="DestAddress"
(пустая строка)
[email protected]
--Asrf456BGe4h
Content-Disposition: form-data; name="MessageTitle"
(пустая строка)
Я негодую
--Asrf456BGe4h
Content-Disposition: form-data; name="MessageText"
(пустая строка)
Привет, Василий! Твой ручной лев, которого ты оставил
у меня на прошлой неделе, разодрал весь мой диван.
Пожалуйста забери его скорее!
Во вложении две фотки с последствиями.
--Asrf456BGe4h
Content-Disposition: form-data; name="AttachedFile1"; filename="horror-photo-1.jpg"
Content-Type: image/jpeg
(пустая строка)
(двоичное содержимое первой фотографии)
--Asrf456BGe4h
Content-Disposition: form-data; name="AttachedFile2"; filename="horror-photo-2.jpg"
Content-Type: image/jpeg
(пустая строка)
(двоичное содержимое второй фотографии)
--Asrf456BGe4h--
(отсутствующий эпилог)

Пример запроса. подробнее в википедии

Автор: Sice 23.1.2011, 22:53
Цитата(iff @ 23.1.2011,  22:00)
Код

POST /send-message.html HTTP/1.1
Host: mail.example.com
Referer: http://mail.example.com/send-message.html
User-Agent: BrowserForDummies/4.67b
Content-Type: multipart/form-data; boundary="Asrf456BGe4h"
Content-Length: (суммарный объём включая дочерние заголовки)
Connection: keep-alive
Keep-Alive: 300
(пустая строка)
(отсутствующая преамбула)
--Asrf456BGe4h
Content-Disposition: form-data; name="DestAddress"
(пустая строка)
[email protected]
--Asrf456BGe4h
Content-Disposition: form-data; name="MessageTitle"
(пустая строка)
Я негодую
--Asrf456BGe4h
Content-Disposition: form-data; name="MessageText"
(пустая строка)
Привет, Василий! Твой ручной лев, которого ты оставил
у меня на прошлой неделе, разодрал весь мой диван.
Пожалуйста забери его скорее!
Во вложении две фотки с последствиями.
--Asrf456BGe4h
Content-Disposition: form-data; name="AttachedFile1"; filename="horror-photo-1.jpg"
Content-Type: image/jpeg
(пустая строка)
(двоичное содержимое первой фотографии)
--Asrf456BGe4h
Content-Disposition: form-data; name="AttachedFile2"; filename="horror-photo-2.jpg"
Content-Type: image/jpeg
(пустая строка)
(двоичное содержимое второй фотографии)
--Asrf456BGe4h--
(отсутствующий эпилог)

Пример запроса. подробнее в википедии

А можно пожалуйста пример в VB, если Вас не затруднит ?

Автор: iff 24.1.2011, 16:56
Смысл в том, что если вам надо отправить:
/game.php?viewer_id=МОЙ_АЙДИ&auth=КЛЮЧf&method=authorize
Т.е. вам лишь это важно передать серверу: viewer_id=МОЙ_АЙДИ&auth=КЛЮЧf&method=authorize, то тогда получается GET - запрос нужен. В первом вашем прмере по сути е написан GET-запрос, только вот слово "GET" было заменено "POST".

Добавлено через 12 минут и 22 секунды
П.С. покажите HTML-код той формы (страници), которую вы хотите заполнить и отослать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)