Лучший отвечающий
Как работать с несколькими webBrowser?

Вопрос
-
Есть форма с tabControl1 (с 2-мя вкладками). На первой вкладке находится webBrowser1, на второй webBrowser2. При загрузке программы, в обоих webBrowser выполняю авторизацию. Т.е. ввожу два разных пароля и логина.
У меня два вопроса:
- Почему при повторном запуске авторизация не происходит? Т.е. при входе (на странице сайта) установлена галочка «запомнить меня». И при повторном запуске программы сразу захожу на страницу которая высвечивается после авторизации. Почему так? Где хранятся данные об авторизации? В IE или Опере могу заходить под другими логинами и паролями (при этой включенной программе). Т.е. на их работу она не влияет.
- Авторизация происходит отдельно в 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