На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> NTLM Proxy WebBrowser(FF) , Что не так.
    Добрый день.
    Помогите понять, почему не работает.


    Для доступа в интернет я использую прокси сервер(Калина), который использует NTLM авторизацию.
    1 случай: Броузер на прямую настраиваю на прокси(Калина), прохожу авторизацию, работаю(+)
    2 случай: Для контроля трафика Использую локальный просик(Fiddler). Схема такая Броузер-Fiddler-Калина.
    Авторизируюсь, работаю.
    !3! случай: В цепочку вставляю свой проксик(Мой), который(теперь) просто ретранслирует данные.
    Схема: Броузер-Мой-Фиддлер-Калина.
    !!!Не могу пройти авторизацию..... Запросы проходят как надо... Калина просто не пропускает просит, авторизоваться.

    Я просто в шоке!!!!
    Я думал, что я что то лишнее передаю, или не передаю, но все данные которые я отсылаю во ввсех случая одинаковые, я проверял... Я не могу понять по чем он меня бокопорит?

    Сам кусок кода в котором я реализирую пересылку....

    Спасибо.
    ExpandedWrap disabled
       TcpClient toPHP = new TcpClient();
              toPHP.Connect("хост", "порт");
              int read = 0;
              do
              {
                  byte[] buffer = new byte[bufferSize];
                  read = clientSocket.Receive(buffer);
                  if (read < bufferSize)
                      Array.Resize<byte>(ref buffer, read);
                  toPHP.Client.Send(buffer);
              } while (read != 0 && read == bufferSize);
              //
              read = 0;  
              do
              {
                  byte[] buffer = new byte[bufferSize];
                  read =toPHP.Client.Receive(buffer);
                  if (read < bufferSize)
                      Array.Resize<byte>(ref buffer, read);
                  clientSocket.Send(buffer);
              } while (read != 0 && read == bufferSize);
              //
              toPHP.Close();
              clientSocket.Close();
      Скорее всего напрасно закрываешь сокет. По идее сокеты надо держать открытыми, пока оба (браузер и фиддлер) не договорятся и сами не закроют сокеты.
        Uncle_Bob, Пробывал результат тот же.


        Люди, у кого есть возможности посмотрите пожалуйста исходники и протэстируйте на сети NTLM авторизацией.
        Там всего-лишь два класса, ничего лишнего, никаких дополнительных фич...

        Взгляните на дампы сессии авторизации....
        Вроде бы всё проходит, но не пускает...


        Спасибо.
        Прикреплённый файлПрикреплённый файлProxyServerSmall_081709.zip (161.48 Кбайт, скачиваний: 80)
          Дампы сессий.
          Good Сессия которая удачно загружает изображение(случай 2).
          Bad Неудачная сессия(случай 3).
          Прикреплённый файлПрикреплённый файлsessions.rar (4.94 Кбайт, скачиваний: 83)
            Цитата Flanker @
            Uncle_Bob, Пробывал результат тот же.

            ExpandedWrap disabled
              clientSocket.Close();


            В коде сокет по-прежнему закрываешь
              Uncle_Bob, Если я закрываю clientSocket.Close();
              То что то долго они расходятся, то есть браузер чего-то ждёт....

              clientSocket - Сокет между Броузер->Мой(прокси)

              Когда закрываю toPHP, то без тормозов, но тот же самый эффект, просит авторизации.

              toPHP- Сокет между Мой(прокси)->Калина(прокси)

              Спасибо.
                по-моему ты внутри своего Run должен код обернуть в цикл

                while (браузер или прокся не закрыли сокет)
                {
                ...
                }
                  Спасибо.
                  Смогу попробовать только завтра на работе...

                  О результатах доложу.
                    Пробывал, ничего хорошего...

                    Ничего не получилось, после возвращения ответа, Броузер сам закрывает соединение, С фиддлером приходится закрывать самому, а если пытаюсь отослать, какуе-то чепуху, он
                    сразу разрывает соединение....


                    Спасибо.

                    Может NTLM авторизация проходит через один сеанс, тремя посылками запрос-ответ?
                    reuseable=true;
                    Socket.Disconnect(reuseable);

                    Ну а как же мне тогда, следующий запрос броузера засунуть именно в тот сокет?
                    Сам понимаю, что это чепуха....

                    Спасибо.
                    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0230 ]   [ 15 queries used ]   [ Generated: 17.05.24, 10:19 GMT ]