none
Как работать с несколькими webBrowser? RRS feed

  • Вопрос

  • Есть форма с tabControl1 (с 2-мя вкладками). На первой вкладке находится webBrowser1, на второй webBrowser2. При загрузке программы, в обоих webBrowser выполняю авторизацию. Т.е. ввожу два разных пароля и логина.

     

    У меня два вопроса:

    1. Почему при повторном запуске авторизация не происходит? Т.е. при входе (на странице сайта) установлена галочка «запомнить меня». И при повторном запуске программы сразу захожу на страницу которая высвечивается после авторизации. Почему так? Где хранятся данные об авторизации? В IE или Опере могу заходить под другими логинами и паролями (при этой включенной программе). Т.е. на их работу она не влияет.
    2. Авторизация происходит отдельно в webBrowser1 и webBrowser2. Но, после того, как они оба зашли под своими паролями, то они начинаю отображать не два разных пользователя, а только одного. Т.е. webBrowser1 и webBrowser2 отображают одного и того же пользователя, а не двух разных. Эта же проблема, если делаю две разные программы, в каждой по одному webBrowser. Все равно, обе программы отображают одного пользователя. Хотя вхожу с разными паролями. Вот под каким последним паролем зашел, этот пользователь во всех webBrowser и отображается. Как сделать, что бы отображались разные пользователи?

     

    namespace Nemexi_sg6336_v._4

    {

       public partial class Form1 : Form

       {

          string address_start = @"http://www.nemexia.ru/";

     

          public Form1()

          {

             InitializeComponent();

     

             try { this.webBrowser1.Navigate(new Uri(address_start)); }

             catch (System.UriFormatException) { return; }

     

             try { this.webBrowser2.Navigate(new Uri(address_start)); }

             catch (System.UriFormatException) { return; }

          }

       }

    }

    • Перемещено Abolmasov Dmitry 6 февраля 2012 г. 10:47 (От:Языки программирования)
    29 января 2012 г. 18:30

Ответы

  • Так почему же, когда создаю две разные программы с WebBrowse, то они используют одни и те же куки? Об этом писал в п.2. Программы же разные, два отдельных *.ехе файла.

    Так же себя будут вести если вы 2 раза запустите оперу/хром/фаерфокс/ие. Так как куки хранятся не в оперативной памяти, а в файлах или локальной базе данных.

    Можно пробовать получать куки с помощью того же WebBrowser-а, потом сохранять их в строковой переменной, очищать куки веб-браузера и внедрять их с помощью InternetSetCookie без указания даты истечения. В этом случае куки должны хранится в памяти процесса и будут доступны только этому процессу. Т.е. таким образом запуская 2 раза exe должны получится для каждого процесса свои куки.

    Экспорт функции internetsetcookie (Expires указывать не надо)

    Очистка сохраненных cookies - Как удалить куки?


    Для связи [mail]
    • Помечено в качестве ответа Abolmasov Dmitry 31 января 2012 г. 9:34
    30 января 2012 г. 9:29

Все ответы

  • Дело в том, что после авторизации на компьютер сохраняются куки, содержащие в себе информацию, которая передается каждый раз сайту и он по ней понимает что вы это вы и не требует второй раз авторизацию. Webbrowser сохраняет эти куки для каждого сайта в отдельный файл, но так как сайт у вас один и тот же, то 2ая авторизация переписывет первую и получается что вы авторизованы только от одного пользователя.

    Скорей всего с помощью WebBrowser одноременную авторизацию с 2х аккаунтов сделать не выйдет.

    В опере в разныз вкладках разве вы можете войти под двумя пользователями сразу?


    Для связи [mail]
    30 января 2012 г. 7:47
  •    Могу вызвать одновременно: Оперу, IE, Mozilla,… свою программу с WebBrowse.

       И в каждом браузере зайти на этот сайт другим пользователем. И они прекрасно сутками работают. В каждом браузере отображая своего пользователя.

       Думал раньше, что WebBrowse связан с IE, но IE работает со своим авторизированным пользователем.

       Так почему же, когда создаю две разные программы с WebBrowse, то они используют одни и те же куки? Об этом писал в п.2. Программы же разные, два отдельных *.ехе файла.

       Конечно, лучше это сделать в одной программе, но и несколько подойдет.

       Как сделать, что бы разные программы использовали разные куки (как Вы пишете)?

    30 января 2012 г. 8:04
  • Так почему же, когда создаю две разные программы с WebBrowse, то они используют одни и те же куки? Об этом писал в п.2. Программы же разные, два отдельных *.ехе файла.

    Так же себя будут вести если вы 2 раза запустите оперу/хром/фаерфокс/ие. Так как куки хранятся не в оперативной памяти, а в файлах или локальной базе данных.

    Можно пробовать получать куки с помощью того же WebBrowser-а, потом сохранять их в строковой переменной, очищать куки веб-браузера и внедрять их с помощью InternetSetCookie без указания даты истечения. В этом случае куки должны хранится в памяти процесса и будут доступны только этому процессу. Т.е. таким образом запуская 2 раза exe должны получится для каждого процесса свои куки.

    Экспорт функции internetsetcookie (Expires указывать не надо)

    Очистка сохраненных cookies - Как удалить куки?


    Для связи [mail]
    • Помечено в качестве ответа Abolmasov Dmitry 31 января 2012 г. 9:34
    30 января 2012 г. 9:29
  • Спасибо.

    Ушел в глубокие раздумья.

    Если правильно понял, то можно сделать одну программу с несколькими браузерами. И что бы они авторизовались по очереди.

    Т.е. первый WebBrowse1 выполняет авторизацию. После чего сохраняются куки. Потом второй WebBrowse2 делает то же самое. И потом, когда идет программное обращение к одному из WebBrowse, то куки заменяются на сохраненные (при авторизации).

    Так можно в теории сделать?

    30 января 2012 г. 11:16
  • Да, но тогда другой WebBrowser не сможет работать в фоновом режиме. Так что лучше одна программа с одним WebBrowser запущенная 2 раза.


    Для связи [mail]
    30 января 2012 г. 12:17