Страница: 1 | 2 |
Вопрос: POST запрос через HTTPS?
Добавлено: 04.07.10 20:13
Автор вопроса: Nevep
В общем искал на этом форуме, но ничего не нашёл...
Требуется послать данные методом POST через HTTPS
Пробовал тупо через винсок...не получилось
If AxWinsock1.CtlState = MSWinsockLib.StateConstants.sckConnected Then
MessageBox.Show("Server is already connected")
Exit Sub
Else
AxWinsock1.RemoteHost = "addons.mozilla.org"
AxWinsock1.RemotePort = 80
AxWinsock1.Connect()
End If
Do While AxWinsock1.CtlState <> 7
Application.DoEvents()
Loop
Dim data As String
data = "GET /ru/firefox/users/login HTTP/1.1" & vbCrLf
data = data & "Host: addons.mozilla.org" & vbCrLf
data = data & "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6" & vbCrLf
data = data & "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & vbCrLf
data = data & "Accept-Language: ru,en-us;q=0.7,en;q=0.3" & vbCrLf
data = data & "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7" & vbCrLf
data = data & "Keep-Alive: 115" & vbCrLf
data = data & "Connection: keep-alive" & vbCrLf & vbCrLf
AxWinsock1.SendData(data)
End Sub
Ответ сервера:
Content-Type: text/html
Date: Sun, 04 Jul 2010 16:13:10 GMT
Location: https://addons.mozilla.org/ru/firefox/users/login
Connection: Keep-Alive
Content-Length: 0
Редирект на https://addons.mozilla.org/ru/firefox/users
помогите:)
Ответы
Всего ответов: 19
Номер ответа: 1
Автор ответа:
Nevep
Вопросов: 6
Ответов: 25
Профиль | | #1
Добавлено: 04.07.10 20:14
пс:не обязательно через winsock. Подскажите любой рабочий вариант.
Номер ответа: 2
Автор ответа:
Nevep
Вопросов: 6
Ответов: 25
Профиль | | #2
Добавлено: 04.07.10 21:33
такс...с GET запросом разобрался. А вот как послать данные методом пост?
Номер ответа: 3
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #3
Добавлено: 04.07.10 21:36
А чем тебе https://addons.mozilla.org/ru/firefox/users не устраивает. Таже страница логина.
Номер ответа: 4
Автор ответа:
Nevep
Вопросов: 6
Ответов: 25
Профиль | | #4
Добавлено: 04.07.10 21:43
Не совсем понял суть вашего поста. есть какие-то существенные различия при отправки данных между
https://addons.mozilla.org/ru/firefox/users
и
https://addons.mozilla.org/ru/firefox/users/login/index.asp
Номер ответа: 5
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #5
Добавлено: 04.07.10 21:44
можно либо с GET добавить параменты в строке ".../ru/firefox/users/?par1=1&par2=2"
или также только в заголовке POST и указать размер данных:
Номер ответа: 6
Автор ответа:
Nevep
Вопросов: 6
Ответов: 25
Профиль | | #6
Добавлено: 04.07.10 21:55
Вы уверены что это прокатит для HTTPS? через винсок я пробовал просто открыть страницу - неполучилось. дальше не капал.
Номер ответа: 7
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #7
Добавлено: 04.07.10 22:52
не уверен, но мне кажется, что должно.
Номер ответа: 8
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #8
Добавлено: 04.07.10 23:17
Поставь Tamper data на фаерфокс и посмотри что да как отправляет бравузер. Я хоть и пользуюсь Орегой, но ради этого плагина фаерфокс поставил)
Номер ответа: 9
Автор ответа:
Nevep
Вопросов: 6
Ответов: 25
Профиль | | #9
Добавлено: 04.07.10 23:57
Отправляю точно такие же заголовки.
Думаю что кроме заголовков браузер ещё что-то передаёт.
Вот заголовки, которые отловил Tamper data, как видно совпадают с заголовками из первого поста
Вот ответ
Т.е. ответ ок, а винсоком редирект.
первую строку жаль он не выдал...
Может в ней что-нибудь править нужно для https?
Номер ответа: 10
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #10
Добавлено: 05.07.10 06:58
В .NET есть класс System.Net.HttpWebRequest. В нем есть поддержка POST и HTTPS.
Как ты собирался это винсоком сделать? Разве в нем поддерживается SSL/HTTPS? Насколько я помню, он дает только базовые возможности передачи данных по сети, высокоуровневых протоколов он не поддерживает.
Винсок в .NET вообще не используется. Вместо него есть класс System.Net.Sockets.Socket.
Если нужен только TCP, то System.Net.Sockets.TcpListerner, System.Net.Sockets.TcpClient. Для UDP тоже есть обертки. Есть более высокоуровневые обертки для SSL, HTTP(S), FTP, SMTP.
Номер ответа: 11
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #11
Добавлено: 05.07.10 07:00
80 порт это вообще-то обычный HTTP. HTTPS работает по умолчанию на другом порту.
Номер ответа: 12
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #12
Добавлено: 05.07.10 07:04
Данные котоыре передаются по HTTPS ты не сможешь просмотреть снифером, потому что они зашифрованы, и расшифровать ты их не сможешь.
Чтоб посмотреть какие поля передаются в запросе, нужен прокси с поддержкой расшифровки HTTPS (например, Fiddler).
При этом соединение будет небезопасным, браузер будет давать предупрежденяи о том что страницу открывать нельзя (обычно их можно проигнорировать), а если делашеь запрос программно, то нужно переопределять механизм валидации сертификата, чтоб не падала ошибка.
Номер ответа: 13
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #13
Добавлено: 05.07.10 13:55
И что же он посмотрел tamper'ом? запрос по обычному http?
Номер ответа: 14
Автор ответа:
Nevep
Вопросов: 6
Ответов: 25
Профиль | | #14
Добавлено: 05.07.10 19:33
Такс...спасибо всем за советы. Делаю через HttpWebRequest, но вот с Fiddler-ом проблемка, не показывает он что мозила шлёт. HTTP показывает, а соединения через HTTPS вообще даже не показывает
Поигрался с настройками Tools/FiddlerOptions/HTTPS ничего не вышло. Может есть альтернатива Fiddler-у чтоб HTTPS остслеживал? Или как его настроить?
Номер ответа: 15
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #15
Добавлено: 05.07.10 19:42
Такс...спасибо всем за советы. Делаю через HttpWebRequest, но вот с Fiddler-ом проблемка, не показывает он что мозила шлёт. HTTP показывает, а соединения через HTTPS вообще даже не показывает
Поигрался с настройками Tools/FiddlerOptions/HTTPS ничего не вышло. Может есть альтернатива Fiddler-у чтоб HTTPS остслеживал? Или как его настроить?
Fiddler показывает что шлет мозила, и показывает HTTPS.
Чтоб показывал что шлет мозила, нужно настроить в ней прокси-сервер 127.0.0.1:8888.
Чтоб показываал HTTPS, нужно чтоб для HTTPS был включен тот же прокси, и включить в свойствах Fiddler опцию Decrypt HTTPS