C#. Вконтакте. Многопоточная авторизация.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by meg0koder:D, 13 Nov 2011.

  1. meg0koder:D

    meg0koder:D New Member

    Joined:
    7 Nov 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Ну все наверное авторизацию ВК знают )

    Code:
    string sid;
                Cookie cook;
                HttpWebRequest wrGETURL = (HttpWebRequest)System.Net.WebRequest.Create("http://vkontakte.ru/login.php?m=1&email=" + login.Text.ToString() + "&pass=" + password.Text.ToString());
                //выставляем значения Headers
                //Запрещаем редирект
                wrGETURL.AllowAutoRedirect = false;
                //Выставляем таймаут
                wrGETURL.Timeout = 100000;
                //получаем Headers,пришедшие в ответе
                string headers = wrGETURL.GetResponse().Headers.ToString();
                //получаем весь ответ
                HttpWebResponse resp = (HttpWebResponse)wrGETURL.GetResponse();
                //записываем ответ в поток
                StreamReader myStreamReadermy = new StreamReader(resp.GetResponseStream(), Encoding.GetEncoding(1251));
                //запихиваем ответ в строку
                string page = myStreamReadermy.ReadToEnd();
                //это регулярное выражение,которое выдирает из переменной headers(а ее мы получили выше) значение sid
                Regex sidregex = new Regex("sid=([a-z0-9]+); exp");
                Match ssid = sidregex.Match(headers);
                sid = ssid.Groups[1].Value;
                //инициализируем куки
                cook = new Cookie("remixsid", sid);
                //тоже самое,куки пишем
                cook.Domain = "vkontakte.ru";
                //проверяем,получили ли мы нужную переменную в куки
                if (String.IsNullOrEmpty(sid))
                    MessageBox.Show("Не верный логин и/или пароль.");
                else
                    MessageBox.Show("Успешная авторизация!");

    Как сделать многопоточность? Количество что бы в numericUpDown можно было выбрать
     
  2. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Во-первых в этом коде нет поддержки прокси, что черевато для многопоточности
    Во-вторых проверка капчи...
    В-третьих httpwebrequest поддерживает только http прокси(тоже минус)...
     
  3. juzam

    juzam New Member

    Joined:
    18 Oct 2010
    Messages:
    45
    Likes Received:
    2
    Reputations:
    0
    По второму пункту можно прикрутить антигейт, а что по остальным?
     
  4. Niades

    Niades New Member

    Joined:
    30 Nov 2010
    Messages:
    28
    Likes Received:
    3
    Reputations:
    0
    Во-первых, я не понимаю, зачем руками выдирать куки, если можно просто сохранить куки ответа в CookieContainer, например, и дальше спокойно пользоваться ими.
    Во-вторых, не понимаю, зачем запрещать авторедирект.
    В-третьих, ты не вызыаешь HttpWebResponse.Close(), что чревато последствиями, т.к. пока он не закрыт ты не сможешь сделать еще один реквест на тот же URI.
    Вообще, код ужасен. Почитай сначала хотя бы msdn:
    http://msdn.microsoft.com/ru-ru/library/system.net.httpwebrequest.aspx
    http://msdn.microsoft.com/ru-ru/library/system.net.httpwebresponse.aspx
    Про потоки:
    http://msdn.microsoft.com/ru-ru/library/system.threading.thread.aspx
    А потом уже начинай что-то писать. По коду ясно видно , что это либо чужой код либо копипаста из туториалов, а сам ты смутно понимаешь, что вообще делаешь.
     
  5. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    использовать proxy socks
     
  6. zoke

    zoke Member

    Joined:
    5 Sep 2010
    Messages:
    90
    Likes Received:
    9
    Reputations:
    5
    без прокси нормально юзать можно.


    Через CookieCollection с кукисами никаких проблем нету.

    ТС, лучше напиши функцию для отправки запросов и используй её для всех программ.
     
  7. Igorok

    Igorok New Member

    Joined:
    12 Mar 2011
    Messages:
    39
    Likes Received:
    1
    Reputations:
    0
    ааа, код вырви глаз, зачем каждую строчку коментить, если свойство класса очевиден?)

    PHP:
     //Выставляем таймаут 
    wrGETURL.Timeout 100000;