Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: POST запрос через HTTPS? Добавлено: 04.07.10 20:13  

Автор вопроса:  Nevep
В общем искал на этом форуме, но ничего не нашёл...
Требуется послать данные методом POST через HTTPS
Пробовал тупо через винсок...не получилось
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        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

Ответ сервера:
HTTP/1.1 301 Moved Permanently
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 запросом разобрался. А вот как послать данные методом пост?
  1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  2.         Dim strRemoteHost As String
  3.         Dim strURLPath As String
  4.         Dim RemotePort As Integer
  5.  
  6.  
  7.         strRemoteHost = "https://addons.mozilla.org"
  8.         strURLPath = "/ru/firefox/users/login/index.asp"
  9.         RemotePort = 443
  10.         AxInet1.RemotePort = RemotePort
  11.         AxInet1.Protocol = InetCtlsObjects.ProtocolConstants.icHTTPS
  12.         AxInet1.RemoteHost = strRemoteHost
  13.  
  14.         MsgBox(AxInet1.OpenURL(strRemoteHost & strURLPath, dataType:=False))
  15.  
  16.     End Sub

Ответить

Номер ответа: 3
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #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-сайт: xawp.narod.ru
 Профиль | | #5
Добавлено: 04.07.10 21:44
можно либо с GET добавить параменты в строке ".../ru/firefox/users/?par1=1&par2=2"
или также только в заголовке POST и указать размер данных:
  1. POST http://website.com/?act=login HTTP/1.1
  2. Host: website.com
  3. User-Agent: Some User Agent 1.0
  4. Accept: text/html
  5. Accept-Language: ru,en-us
  6. Accept-Charset: windows-1251
  7. Keep-Alive: 300
  8. Proxy -Connection: keep -alive
  9. Referer: http://website.ru/index.php
  10. Content-Type: application/x-www-form-urlencoded
  11. Content-Length: 12
  12.  
  13. par1=1&par2=2

Ответить

Номер ответа: 6
Автор ответа:
 Nevep



Вопросов: 6
Ответов: 25
 Профиль | | #6 Добавлено: 04.07.10 21:55
Вы уверены что это прокатит для HTTPS? через винсок я пробовал просто открыть страницу - неполучилось. дальше не капал.

Ответить

Номер ответа: 7
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #7
Добавлено: 04.07.10 22:52
не уверен, но мне кажется, что должно.

Ответить

Номер ответа: 8
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #8
Добавлено: 04.07.10 23:17
Поставь Tamper data на фаерфокс и посмотри что да как отправляет бравузер. Я хоть и пользуюсь Орегой, но ради этого плагина фаерфокс поставил)

Ответить

Номер ответа: 9
Автор ответа:
 Nevep



Вопросов: 6
Ответов: 25
 Профиль | | #9 Добавлено: 04.07.10 23:57
Отправляю точно такие же заголовки.
Думаю что кроме заголовков браузер ещё что-то передаёт.
Вот заголовки, которые отловил Tamper data, как видно совпадают с заголовками из первого поста
  1. Host=addons.mozilla.org
  2. User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6
  3. Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  4. Accept-Language=ru,en-us;q=0.7,en;q=0.3
  5. Accept-Encoding=gzip,deflate
  6. Accept-Charset=windows-1251,utf-8;q=0.7,*;q=0.7
  7. Keep-Alive=115
  8. Connection=keep-alive

Вот ответ
  1. Status=OK - 200
  2. Server=Apache
  3. X-Backend-Server=pm-app-amo14
  4. Vary=Accept-Encoding
  5. Content-Type=text/html; charset=UTF-8
  6. X-amo-darklaunch=z
  7. Content-Encoding=gzip
  8. Date=Sun, 04 Jul 2010 17:35:49 GMT
  9. Keep-Alive=timeout=5, max=1000
  10. X-AMO-ServedBy=pm-app-amo14
  11. Transfer-Encoding=chunked
  12. Via=Moz-Cache-ams-zlb03
  13. X-Powered-By=PHP/5.2.9
  14. X-Cache-Info=caching, cached
  15. Connection=Keep-Alive


Т.е. ответ ок, а винсоком редирект.
первую строку жаль он не выдал...
Может в ней что-нибудь править нужно для https?
  1. data = "GET /ru/firefox/users/login HTTP/1.1" & vbCrLf

Ответить

Номер ответа: 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
AxWinsock1.RemotePort = 80

80 порт это вообще-то обычный HTTP. HTTPS работает по умолчанию на другом порту.

Ответить

Номер ответа: 12
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #12 Добавлено: 05.07.10 07:04
Данные котоыре передаются по HTTPS ты не сможешь просмотреть снифером, потому что они зашифрованы, и расшифровать ты их не сможешь.
Чтоб посмотреть какие поля передаются в запросе, нужен прокси с поддержкой расшифровки HTTPS (например, Fiddler).
При этом соединение будет небезопасным, браузер будет давать предупрежденяи о том что страницу открывать нельзя (обычно их можно проигнорировать), а если делашеь запрос программно, то нужно переопределять механизм валидации сертификата, чтоб не падала ошибка.

Ответить

Номер ответа: 13
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #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
Nevep пишет:
Такс...спасибо всем за советы. Делаю через HttpWebRequest, но вот с Fiddler-ом проблемка, не показывает он что мозила шлёт. HTTP показывает, а соединения через HTTPS вообще даже не показывает :(
Поигрался с настройками Tools/FiddlerOptions/HTTPS ничего не вышло. Может есть альтернатива Fiddler-у чтоб HTTPS остслеживал? Или как его настроить?

Fiddler показывает что шлет мозила, и показывает HTTPS.
Чтоб показывал что шлет мозила, нужно настроить в ней прокси-сервер 127.0.0.1:8888.
Чтоб показываал HTTPS, нужно чтоб для HTTPS был включен тот же прокси, и включить в свойствах Fiddler опцию Decrypt HTTPS

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам