powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / sendmessage, отправка нажатий в браузер
10 сообщений из 10, страница 1 из 1
sendmessage, отправка нажатий в браузер
    #40024165
qlewerok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
предисловие
необходимо программно авторизоваться на сайте. при помощи selenium запускаю браузер, могу вводить логин и пароль, но сайт считает, что поля пустые и требует именно ручного ввода. решил посылать нажатия из .ехе приложения в браузер. запускаю код, навожусь на браузер. считываю по таймеру hwnd активного окна(браузера). получаю handle рабочей зоны по имени класса, взятого из spy++. посылаю туда SendMessage
Код: vbnet
1.
2.
3.
Dim hWnd As IntPtr = GetForegroundWindow()'hWnd хрома
Dim destControl As Integer = FindWindowEx(hWnd, IntPtr.Zero, "Chrome_RenderWidgetHostHWND", Nothing)
SendMessage(destControl, 256, Keys.Tab, 0)'ошибка

программа вылетает с ошибкой System.InvalidCastException: "Приведение строки "" к типу "Integer" является недопустимым."
объявления(по интернету их десятки, пробовал разные комбинации):
Код: vbnet
1.
2.
3.
Private Declare Function GetForegroundWindow Lib "user32" () As IntPtr
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As IntPtr, ByVal hWnd2 As IntPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As IntPtr
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer
...
Рейтинг: 0 / 0
sendmessage, отправка нажатий в браузер
    #40024177
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему ты каким-то вообще не тем путем идешь. Возможно, там на сервере какая-то защита, наподобии antifiorgery-токена, поэтому простой отправки логина и пароля недостаточно для авторизации - трейси девтулзой весь процесс "ручного" логина и смотри HTML/HTTP на тему что такое ты при программном логине упускаешь (какое-нибудь скрытое поле или кука).
...
Рейтинг: 0 / 0
sendmessage, отправка нажатий в браузер
    #40024181
qlewerok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat, кучу литературы перечитал, пишут, нельзя на чистом js имитировать нажатие на клавиши. мне бы уже хоть как-то авторизоваться, пусть и с костылями через vb.net, слишком много времени на это убил. например, берем любой сайт, вот твиттер: https://mobile.twitter.com/login?lang=ru
вот код, который можно запустить в браузере.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function getElementByXPath(path, otec) {
	return document.evaluate(path, otec, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}
function main(){
	var xxx = getElementByXPath('//html/body/div/div/div/div[2]/main/div/div/div[1]/form/div/div[1]/label/div/div[2]/div/input', document);
	xxx.value = '88005553535';
	xxx = getElementByXPath('//html/body/div/div/div/div[2]/main/div/div/div[1]/form/div/div[2]/label/div/div[2]/div/input', document);
	xxx.value = '111111';
}
main();

текстовые поля введутся, то кнопка "войти" не станет активной
...
Рейтинг: 0 / 0
sendmessage, отправка нажатий в браузер
    #40024182
qlewerok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
sendmessage, отправка нажатий в браузер
    #40024193
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qlewerok
текстовые поля введутся, то кнопка "войти" не станет активной

Тебе вообще не нужно нажимать никакие клавиши - сделай просто программно HTTP запрос такой же, какой отправляется при "человеческой" авторизации.
...
Рейтинг: 0 / 0
sendmessage, отправка нажатий в браузер
    #40024195
qlewerok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat,

как я узнаю, каким должен быть запрос? какие программы\средства? на примере твиттера, например
...
Рейтинг: 0 / 0
sendmessage, отправка нажатий в браузер
    #40024211
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qlewerok
как я узнаю, каким должен быть запрос? какие программы\средства? на примере твиттера, например

Браузерные DevTools (F12), или Fiddler. Там, может быть, конечно, не все просто, но, думаю, расковырять это при желании можно.
...
Рейтинг: 0 / 0
sendmessage, отправка нажатий в браузер
    #40024773
qlewerok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat,

получилось, авторизация прошла, спасибо) в итоге сделал ещё проще: заставляю пользователя самого авторизоваться 1 раз. так даже лучше, нет мороки с картинками, кодами в смс и тд. после авторизации копирую его куки
Код: vbnet
1.
cooki = bot.Manage.Cookies

раскладываю этот массив на строки, беру имя и значение, запихиваю в другое окно
Код: vbnet
1.
bot2.Manage.AddCookie(cooka.Name, cooka.Value)

и после рефреша окна там проходит авторизация. минус: приходится грузить страницу, потом засовывать куку и обновлять страницу. итого страница грузится два раза, это долго( как сразу отправлять куки при обращению к сайту, я не нашёл
...
Рейтинг: 0 / 0
sendmessage, отправка нажатий в браузер
    #40024778
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qlewerok
заставляю пользователя самого авторизоваться 1 раз. так даже лучше, нет мороки с картинками, кодами в смс и тд. после авторизации копирую его куки

А, ну если это возможно, то, конечно, тогда это совсем просто.
...
Рейтинг: 0 / 0
sendmessage, отправка нажатий в браузер
    #40024781
qlewerok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat,

возможно вставить куки сразу при переходе на сайт? сейчас переход выглядит так
Код: vbnet
1.
bot.Get(httpss)

затем подсовываются куки. потом
Код: vbnet
1.
bot.Refresh()

это долго
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / sendmessage, отправка нажатий в браузер
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]