Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2012, 16:33   #1
qwq
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 96
Печаль Программа полуавтоматической авторизации на сайте(с капчей) C#

Здравствуйте. Была поставленна задача написать программу для полуавтоматической авторизации на сайте, после ввода логина и пароля идет капча, которую не удается получить.

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Threading;
using System.IO;
using mshtml;
using System.Net;
using System.Runtime.InteropServices;
using HtmlAgilityPack;

namespace Uh.ru
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();

        }
        int d = 0;
        string k = "";
        int i = 0;

        private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.ScriptErrorsSuppressed = true;
            webBrowser1.Navigate("uh.ru/login");
            webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
            while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
            {
                Application.DoEvents();                                                         //Загрузил страницу
            }                                                                                   
            
            webBrowser1.Document.GetElementById("login").SetAttribute("value", "логин");     //Ввел логин
            webBrowser1.Document.GetElementById("password").InnerText = "пароль";               //Ввел пароль
            foreach (HtmlElement he in webBrowser1.Document.GetElementsByTagName("input"))
                if (he.GetAttribute("value").Equals("Войти"))
                {
                    he.InvokeMember("click");                                                   //Нажал кнопку войти
                    i = 1;
                    break;
                }
            webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
            while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
            {
                Application.DoEvents();                                                         //Загрузил страницу
            }            
            

        }
        
        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            richTextBox1.Clear();
            k = "";
            k += webBrowser1.DocumentText;
            richTextBox1.AppendText(k);
            if (i == 1)
            {
                HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                doc.LoadHtml(k);
                HtmlNode bodyNode = doc.DocumentNode.SelectSingleNode("//img[@src='../../dev/captcha/idx.php']");
                MessageBox.Show(bodyNode.InnerText);
                MessageBox.Show(bodyNode.Attributes["src"].Value);
            }
            
        }

    }
}

не могу получить капчу
может кто сталкивался, или может пойти другим путем?


НЕ ЗАБЫВАЙТЕ ОФОРМЛЯТЬ КОД ТЕГАМИ!

Модератор

Последний раз редактировалось Serge_Bliznykov; 20.11.2012 в 16:59.
qwq вне форума Ответить с цитированием
Старый 21.11.2012, 00:34   #2
masax
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 248
По умолчанию

может лучше просто выдрать из строки с исходным HTML ?
Контакты
skype, почта: bm@kwax.ru
masax вне форума Ответить с цитированием
Старый 21.11.2012, 08:57   #3
qwq
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 96
По умолчанию

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

Может можно через HttpWebRequest и HttpWebResponse (пробовал, но не получилось, т.к. перебрал много снифферов, а получить все что надо не смог). Может кто делал такое, или посоветует где почитать?

Последний раз редактировалось qwq; 21.11.2012 в 09:01.
qwq вне форума Ответить с цитированием
Старый 21.11.2012, 12:30   #4
masax
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 248
По умолчанию

вытащи bitmap загруженной картинки, а не url
если пользуешься WebBrowser-ом
Контакты
skype, почта: bm@kwax.ru
masax вне форума Ответить с цитированием
Старый 21.11.2012, 12:55   #5
qwq
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 96
По умолчанию

Цитата:
Сообщение от masax Посмотреть сообщение
вытащи bitmap загруженной картинки, а не url
если пользуешься WebBrowser-ом
а возможно ли это сделить при скрытом браузере, если да, то как?
qwq вне форума Ответить с цитированием
Старый 22.11.2012, 00:25   #6
masax
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 248
По умолчанию

используй WebRequest / WebResponse
и не будет вообще никакого представления страницы, только исходный код
Контакты
skype, почта: bm@kwax.ru
masax вне форума Ответить с цитированием
Старый 22.11.2012, 08:52   #7
qwq
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 96
По умолчанию

Цитата:
Сообщение от masax Посмотреть сообщение
используй WebRequest / WebResponse
и не будет вообще никакого представления страницы, только исходный код
Пробовал и так, но за неимением нормального сниффера, не удалось полностью сделать как будто работа идет через обычный браузер
qwq вне форума Ответить с цитированием
Старый 22.11.2012, 10:15   #8
masax
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 248
По умолчанию

все что тебе нужно - обработать header Cookie
собственно в запрос картинки вставить тот что ты получишь при 1 запросе
Контакты
skype, почта: bm@kwax.ru
masax вне форума Ответить с цитированием
Старый 22.11.2012, 10:35   #9
qwq
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 96
По умолчанию

Цитата:
Сообщение от masax Посмотреть сообщение
все что тебе нужно - обработать header Cookie
собственно в запрос картинки вставить тот что ты получишь при 1 запросе
а можно ли первую часть выполнить в том виде в каком она сейчас(я имею ввиду логин пароль), получить из WebBrowser-а header Cookie и подцепить к запросу картинки?

и еще, какой посоветуете сниффер?
qwq вне форума Ответить с цитированием
Старый 22.11.2012, 10:50   #10
masax
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 248
По умолчанию

придется делать тогда 3 запроса
1 - обращение на http://uh.ru, в ответ приходит header
Set-Cookie:PHPSESSID=e8af1674052970d226 21e85954563b6f; path=/

2 - обращение http://uh.ru/login c header-ами
Cookie:PHPSESSID=e8af1674052970d226 21e85954563b6f

POST data
Код:
login:login
password:password
enter:Войти
получаем
Set-Cookie:capauh=1; expires=Thu, 22-Nov-2012 12:49:46 GMT

3 - обращение к
http://uh.ru/dev/captcha/idx.php?PHP...21e85954563b6f
Cookie:PHPSESSID=e8af1674052970d226 21e85954563b6f; capauh=1
получаешь файл картинки

4. обращение к http://uh.ru/login
Cookie: PHPSESSID=e8af1674052970d22621e8595 4563b6f; capauh=1

POST data
Код:
keystring:kaptcha_number
login:login
password:password
enter:Отправить
получаешь ответ
Контакты
skype, почта: bm@kwax.ru
masax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет повторной авторизации на сайте -MagicAlex- PHP 9 22.10.2012 05:42
Регистрация на сайте. Проблемы с капчей igrok111 Общие вопросы Delphi 1 22.07.2012 03:58
написать процедуру авторизации на сайте art-programs Фриланс 0 25.03.2011 17:32
Комплексный вопрос на тему авторизации на сайте и подтверждению сертификата Anatol_rus Работа с сетью в Delphi 13 15.10.2009 15:44
Проблема авторизации на сайте Terikon Работа с сетью в Delphi 0 17.03.2009 16:50