Страница: 1 | 2 | 3 | 4 |
Вопрос: Залогиниться к Mail.Ru из VB
Добавлено: 19.09.04 21:25
Автор вопроса: Comanche
Ответы
Всего ответов: 46
Номер ответа: 31
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #31
Добавлено: 24.09.04 16:43
Я немножко не то имел в виду: винсок ведь, кажется, имеет ограниченный размер буфера, и если принимаемые данные (неважно, какого характера) имеют немалый размер, то по-моему винсок примет их в несколько присестов. По крайней мере, код по чтению почты через POP3, скачанный чуть ли не с этого сайта, делает именно так:
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
...
...
Winsock1.GetData strData
If Left$(strData, 1) = "+" Or m_State = POP3_RETR Then
Select Case m_State
...
...
Case POP3_RETR
strBuffer = strBuffer & strData ' << !!!
...
...
End Select
Else
' ОШИБКА
End If
End Sub
То, что я называю "накоплением", сидит вот в этой строчке:
strBuffer = strBuffer & strData
Вот я и хочу узнать, нужно ли мне делать в своём коде что-нибудь подобное. А опираться на Content-Length, имхо, нельзя: это длина только "login-строки", идущей после всех заголовков, а ведь теоретически этот начальный блок с заголовками (размер которого заранее неизвестен) может и не прочитаться за одно событие DataArrival...
Номер ответа: 32
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #32
Добавлено: 24.09.04 16:51
СТОП.
Внимательно почитал я вот эту ссылку:
http://www.vbip.com/winsock/winsock_http_07_01.asp
И там написано следующее:
Т.е. получается, что я тоже могу сделать в своём коде "накопление", и тогда формирование файла Response.html и последующий оператор "IF" уйдёт из Winsock1_DataArrival в Winsock1_Close, а в событии Winsock1_DataArrival останется только "накопление". Так?
И ещё одно:
Всё вышеописанное прекрасно работает на MAIL.RU (спасибо тебе, дружище DaSharm), а вот на NAROD.RU - не пашет: выдернутый из ответного пакета "Location" при попытке открытия в броузере (хоть ручками, хоть через ShellExecute) даёт ошибку (
Номер ответа: 33
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #33
Добавлено: 24.09.04 23:10
В НТТР есть 3 способа определения конца данных, 2 самых распостраненных: в поле Content-Length и по закрытию соединения. Если НТТР пакет от клиента к серверу содержит строку Connection: close, то когда сервер выдаст нам страницу, то закроет соединение, но если же Connection: keep-alive, то сервер не разры.вает соединение
>спасибо тебе, дружище DaSharm
незачто
>а вот на NAROD.RU - не пашет
На самом деле оно пашет, оно не может не пахать. ПРосто нужно немножко попариться и все будет ОК!
Номер ответа: 34
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #34
Добавлено: 25.09.04 13:45
Спасибо за информацию. Тогда я просто в пакет авторизации Packet пропишу явно "Connection: close".
Насчёт Narod.Ru:
Вот такой пакет я посылаю при авторизации:
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*
Referer: http://narod.yandex.ru/
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MRA 3.0 (build 00614))
Host: passport.yandex.ru
Content-Length: 29
Pragma: no-cache
login=xxxxxxxxx&passwd=yyyyyy
(я убрал из этого пакета заголовок "Cookie"
И вот такой Location получаю в ответном "редиректном" пакете:
Он дан в относительной нотации, поэтому я комбинирую его со значением заголовка "Host" из первого пакета и получаю в итоге:
И попытка открытия вот этого URL'а вызывает ошибку, что у меня отключены "куки" (хотя это не так).
Даже если из первого пакета не убирать заголовок "Cookie", то всё равно я получаю ошибку.
Я полазил по разделу "Помощь" на Народ.Ру - и там написано, что если куки отключены, то ничё работать не будет. По определению. Типа у них так задумано. А вот на Мейл.Ру, хотя в ответном Location тоже есть слово "checkcookie", всё работает и при отключённых куках.
Я так понимаю, что на Мейл.Ру куки - это просто "средство для удобства", а на Народ.Ру - "обязательное средство для работы". Отсюда, наверное, и проблемы.
Поэтому мне кажется, что на Народ.Ру я никак не смогу авторизоваться вышеописанным способом. Или всё-таки есть способ исхитриться?
DaSharm, помоги уж ещё раз )
Номер ответа: 35
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #35
Добавлено: 25.09.04 14:26
2 Comanche Кинь пример плиз в no_detect@mail.ru
Номер ответа: 36
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #36
Добавлено: 25.09.04 16:02
Скинул.
Номер ответа: 37
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #37
Добавлено: 25.09.04 18:52
попробую
Номер ответа: 38
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #38
Добавлено: 25.09.04 19:50
Классно... Скинул хакеру, а попробует dasharm...
))))
Номер ответа: 39
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #39
Добавлено: 25.09.04 20:07
Я вот тоже не врубился
Может, это одно лицо?
Номер ответа: 40
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #40
Добавлено: 25.09.04 23:14
Та вы гоните, Хакер это я, а DaSharm есть DaSharm )) А за примерчик спасибо
Номер ответа: 41
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #41
Добавлено: 26.09.04 10:33
Я попробую на народ.ру пройти авторизацию. ТОлько дайте какой-то логин и пасс.
Номер ответа: 42
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #42
Добавлено: 27.09.04 13:10
2DaSharm:
Логин: vb-test
Пароль: vbnet
Номер ответа: 43
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #43
Добавлено: 27.09.04 18:55
ок, сегодня вечером попробую.
Номер ответа: 44
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #44
Добавлено: 29.09.04 14:22
Не забыл про меня?
Номер ответа: 45
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #45
Добавлено: 29.09.04 14:43
Извиняюсь, оч. много работы. Попробую при первой возможности