Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2011, 00:14   #1
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию HTTPS и порт 443

Имеется idHTTP, IdSSLIOHandlerSocketOpenSSL, адрес https.
При запросе вижу в снифере, что автоматически вставляется порт 443 (example.com:443). Сервер не воспринимает такой запрос, и перенаправляет на адрес без порта, но при перенаправлении снова автоматически подставляется порт.
Можно ли убрать/заменить порт?
Voody вне форума Ответить с цитированием
Старый 16.07.2011, 01:04   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Порт нельзя убрать, просто по-умолчанию для HTTP принят порт 80, а для HTTPS порт 443. Можно указать любой другой, как для HTTP так и для HTTPS. Если сервер не ожидает соединения на 443 порту, то он или не поддерживает HTTPS или поддерживает его на другом порту.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 16.07.2011, 11:52   #3
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Как тогда сменить? Вроде все свойства, более-менее смахивающие на порт перепробовал
Voody вне форума Ответить с цитированием
Старый 16.07.2011, 12:05   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

можно ссыль?
ибо наличие явного порта в адресе не мешает.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.07.2011, 12:13   #5
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

https://twitter.com/signup

снифер показывает, что программа запрашивает https://twitter.com:443/signup , который перенаправляет на https://twitter.com/signup, программа опять ставит порт и опять перенаправление
Voody вне форума Ответить с цитированием
Старый 16.07.2011, 13:45   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> снифер показывает, что программа запрашивает https://twitter.com:443/signup

стоп, программа должна установить соединение с сервером twitter.com на порту 443. После этого идёт обмен пакетами по протоколу SSL/TLS, никаких signup и прочих подробностей обмена данными снифер видеть не должен!

У вас, походу, обмен по обычному протоколу HTTP.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 16.07.2011, 14:15   #7
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию



Если ничего не видеть, то как по-вашему работать с https?))
Voody вне форума Ответить с цитированием
Старый 16.07.2011, 14:34   #8
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Если ничего не видеть, то как по-вашему работать с https?))

а по-вашему, для чего SSL придумали? вот для того, чтобы всякие сниферы ничего и не видели )

У вас обычное открытое HTTP соединение, вот твиттер и посылает вас на защищённый урл. Т.е. IdHTTP вобще не понимает, что работает через SSL, походу.
Возьмите WireShark какой-нибудь, там более понятно, кто на какой порт заходит и что посылает.

Или рабочий пример для IdHTTP + SSL и сравните настройки.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 16.07.2011, 14:45   #9
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Да я не первый раз с https работаю. И никогда такой проблемы не было.
Вообще вопрос не про снифер и не про то, что он должен видеть.
Вы же в первом сообщении написали, что "Можно указать любой другой", дак скажите тогда, как сменить на "любой другой", а то что-то я все свойства перепробовал
Voody вне форума Ответить с цитированием
Старый 16.07.2011, 16:30   #10
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Так, вроде разобрался. Это баг в IdHTTP. Баг в этой строке:

Код:
    if FURI.Port <> IntToStr(IdPORT_HTTP) then begin
      ARequest.Host := FURI.Host + ':' + FURI.Port;    {do not localize}
    end else begin
      ARequest.Host := FURI.Host;
    end;
Т.к. порт у нас не IdPORT_HTTP, то поле Host в запросе превращается в "twitter.com:443". Вероятно, некоторым (многим?) серверам это пофиг, но вот сервер у твиттера оказался принципиальным, и просит повторить запрос, с нормальным полем Host.

Т.к. баг внутри исходников инди, можно или перекомпилить индюков, или повеситься на событие (например, статус), и руками исправить хост:

Код:
procedure TForm1.IdHTTP1Status(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: string);
begin
  IdHTTP1.Request.Host := 'twitter.com';
end;
А по поводу HTTP Analyzera, похоже, он вешает хуки на процесс и выдирает из него ключ шифра для сессии. У меня он не заработал, но, это единственный способ расшифровать траффик между SSL клиентом и сервером, который я могу придумать.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация по HTTPS Coffein Работа с сетью в Delphi 1 12.03.2009 11:54
idHTTP и HTTPS CoDeR Работа с сетью в Delphi 2 12.11.2007 15:55