Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 13

Программная авторизациия на сайте

07.03.2013, 21:08. Показов 1319. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане! На досуге возникла проблема в автоматической авторизацией на сайте estrabota.ru . Перелопатил тонны интернет материалов, в том числе с форума про возможные решения проблемы: формирование POST запроса на авторизацию и эмуляцию человеческих действий, но к сожалению ни тот ни другой вариант не увенчались успехом. Помогите пожалуйста разобраться что я делаю не так?

Формирование и отправка POST запроса:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
        WebBrowser1.Navigate(url & "user/logout/") ' Logout, url = "http://www.spb.estrabota.ru/index.php/"
        waiting(1) ' процедура ожидания загрузки страницы, она работает в ней проблем нет
        Dim body As String = "password2=" & id.pas & "&login2=" & id.log ' id структура содержащая логин и пароль, это тело запроса
        Dim rqst As Net.HttpWebRequest = Net.HttpWebRequest.Create(url & "user/j_login/")
        System.Net.ServicePointManager.Expect100Continue = False ' отключил постоянно появляющуюся строчку Expect: 100-continue
 
        rqst.Method = "post"
        Dim addhead As String
        rqst.Headers.Add("x-requested-with", "XMLHttpRequest")
        rqst.Headers.Add("AcceptLanguage", "ru")
        rqst.Referer = url
        rqst.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"
        rqst.Headers.Add(Net.HttpRequestHeader.AcceptEncoding, "gzip, deflate")
        rqst.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322)"
        rqst.ContentLength = body.Length.ToString()
        rqst.Headers.Add(Net.HttpRequestHeader.Pragma, "no-cache")
        rqst.Headers.Add(Net.HttpRequestHeader.Cookie, "wfSessionCookie=77e257512893fb06ee0a7c1b45877932")
        addhead = "x-requested-with: XMLHttpRequest" & Environment.NewLine
        addhead = addhead + "Accept-Language: ru" & Environment.NewLine
        addhead = addhead + "Referer: " & url & Environment.NewLine
        addhead = addhead + "Accept: */*" & Environment.NewLine
        addhead = addhead + "Content-type: application/x-www-form-urlencoded; charset=UTF-8" & Environment.NewLine
        addhead = addhead + "Accept-Encoding: gzip, deflate" & Environment.NewLine
        addhead = addhead + "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322)" & Environment.NewLine
        ' пакет получился полностью такой же как и перехваченный Charles ответ от сервера пришел такой же как и при нормальной авторизации
        Using rqst_s = rqst.GetRequestStream()
            Dim rqst_body() As Byte = System.Text.Encoding.UTF8.GetBytes(body)
            rqst_s.Write(rqst_body, 0, rqst_body.Length)
        End Using
        Dim response As HttpWebResponse = CType(rqst.GetResponse(), HttpWebResponse)
        Dim dataStream As Stream = response.GetResponseStream()
        Dim reader As New StreamReader(dataStream)
        Dim responseFromServer As String = reader.ReadToEnd()
        'Dim resp As Byte = System.Text.Encoding.UTF8.GetBytes(responseFromServer)
        WebBrowser1.Navigate(url, "", System.Text.Encoding.UTF8.GetBytes(body), "") ' тут пробовал всевозможные варианты, даже ставил WebBrowser1.Navigate(url, "", System.Text.Encoding.UTF8.GetBytes(responseFromServer), "") результат - вместо страницы с замещенной формой личного кабинета со стандартными ссылками открывается сама форма личного кабинета с нерабочими ссылками и авторизация не проходит
        waiting(1)
Итог - пакет вроде правильный но адекватной реакции WebBrowser'a я не добился. Второй вариант: эмуляция действий человека:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        WebBrowser1.Navigate(url) 
        waiting(2)
        Dim point As System.Drawing.Point
        point.X = 895
        point.Y = 480  ' указываю координаты поля ввода Email
        WebBrowser1.Document.GetElementFromPoint(point).Focus()
        SendKeys.SendWait("{DEL}") 'на всякий случай стираю то что там есть
        WebBrowser1.Document.ActiveElement.InnerText() = id.log
        'SendKeys.SendWait(id.log) ' пробовал и эмулировать нажатия кнопок
        'Clipboard.SetText(id.log)
        'SendKeys.SendWait("^(v)") ' и вставку из буфера обмена
        SendKeys.SendWait("{TAB}") ' переход в поле ввода пароля
 
        WebBrowser1.Document.ActiveElement.InnerText() = id.pas
        'SendKeys.SendWait(id.pas) ' то же самое просто пробовал разные вариации
        'Clipboard.SetText(id.pas)
        'SendKeys.SendWait("^(v)")
 
        SendKeys.SendWait("{TAB}") ' перехожу на ссылку "зарегестрироваться"
        SendKeys.SendWait("{TAB}") 'перехожу собственно на кнопку "войти"
        WebBrowser1.Document.ActiveElement.InvokeMember("click") 'и нажимаю так
        'SendKeys.SendWait("{ENTER}") ' или даже так
Итог сих действий - отправка точно такого же POST запроса с маленьким нюансом - в теле запроса вместо нужной строчки "password2=2@2.ru&login2=2@2.ru" почему то получается "password2=пароль&login2=2@2.ru" (естественно @ = %40 а пароль = тоже куча знаков с %) и ответ от сервера - неверный логин или пароль. Подскажите пожалуйста мне верное решение, мне абсолютно неважно какой способ будет работать, в принципе важен сам результат. Была мысль оставить второй вариант и написать процедуру - сниффер которая пакет бы поймала, отредактировала и послала дальше(через Charles получилось перехватить этот пакет, значение "пароль" поменять на "2@2.ru", послать дальше и авторизация прошла, все корректно отобразилось) но я так понял это настолько трудоемко что вряд ли я смогу без помощи это реализовать.

Очень надеюсь на вашу помощь!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.03.2013, 21:08
Ответы с готовыми решениями:

Программная авторизация на сайте.
Здравствуйте.Мне нужно программно залогиниться до одного сайта.Уже мучаюсь неделю,застрял на одном месте. Код программы ниже: public...

Программная авторизация на сайте
как сделать программу которая будет регистрировать пользователя на каком нибудь сайте (брать с txt файла логин,пароль,,серкертное слово и...

Программная аутентификация на сайте
Доброго времени суток. Не могу понять как пройти аутентификацию на сайте. Пример дать не могу, доступ только с моего компа открыт. В чем...

6
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 13
11.03.2013, 21:30  [ТС]
Проблема решена использованием стороннего движка Mozilla
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.03.2013, 02:52
Subxaero, а можно подробнее. Работу с https проверяли?
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 13
12.03.2013, 10:30  [ТС]
При просмотре куда прыгает браузер, нашел только адрес обращение estrabota.ru/index.php/user/j_login/ , ни о каком обращении к протоколу https не наблюдал
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.03.2013, 13:09
Я вообщем спрашивал. Не конкретно об этом сайте.
Интересно, работает ли Ваш метод на защищенном протоколе.
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 13
12.03.2013, 13:28  [ТС]
Аааа.. Ну впринципе не знаю, если алгоритм такой же (POST запроса, узнать можно через перехват пакетов, я использовал Charles) то я думаю не должно быть с этим проблем. Я бы проверил, хотя может быть у https другая система, я в этом не осведомлен.
0
3 / 3 / 0
Регистрация: 26.11.2009
Сообщений: 9
26.03.2013, 23:06
Если кому то еще интересно, не POST конечно но ....
Visual Basic
1
2
3
WebBrowser1.Document.getElementById("login2").Value = "login"
WebBrowser1.Document.getElementById("password2").Value = "pass"
WebBrowser1.Document.getElementsByName("signIn")(0).Click
<input type="email" id="inputEmail" placeholder="email" name="login2"> ваш Email
<input type="password" id="inputPassword" placeholder="пароль" name="password2"> ваш пароль
<button class="btn btn-inet btn-danger" name="signIn" id="signIn2">Войти</button> кликаем кнопку
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.03.2013, 23:06
Помогаю со студенческими работами здесь

Программная авторизация на сайте
Существует сайт необходимо написать программу которая будет автоматически вводить логин и пароль заходить. После необходимо ввести в...

Программная авторизация на сайте
Всем привет. Заранее прошу прощения за тупые вопросы, только начинаю изучать. Есть маленькая задачка. Необходимо осуществить программный...

Программная работа с формой на сайте
Ситуация следующая. На страничке необходимо выбрать значение в select, и затем нажать результирующую кнопку. Использую webBrowser и...

Программная авторизация на сайте через WebBrowser
Всем доброго времени суток.Не могу понять в чем у меня ошибка.Нужно программно авторизоваться на сайте по нажатию кнопки.Но данные в поля...

Программная авторизация на сайте, POST-запрос
Ребят, я этим никогда не интересовался, поэтому простите, если вопрос глупый. Не могу программно войти на сайт...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru