[c#] попытка авторизации в киви кошельке и граббинг баланса

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by amful, 3 May 2012.

  1. amful

    amful New Member

    Joined:
    15 Oct 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Добрый день. Написал код, но не могу понять почему не работает.

    private string GetQiwiCookie()
    {
    string sCookies;
    HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create("https://w.qiwi.ru/features.action");
    myHttpWebRequest.Proxy = new WebProxy("127.0.0.1", 8888);
    myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0";
    myHttpWebRequest.Accept = "application/json, text/javascript, */*";
    myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip, deflate");
    myHttpWebRequest.Headers.Add("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3");
    HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
    sCookies = String.IsNullOrEmpty(myHttpWebResponse.Headers["Set-Cookie"]) ? "" : myHttpWebResponse.Headers["Set-Cookie"];
    return sCookies;
    }


    private string LoginQiwi()
    {
    string sCookies = GetQiwiCookie();
    HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create("https://w.qiwi.ru/login.action");
    myHttpWebRequest.ServicePoint.Expect100Continue = false;
    myHttpWebRequest.Proxy = new WebProxy("127.0.0.1", 8888);
    myHttpWebRequest.Method = "POST";
    myHttpWebRequest.Referer = "https://w.qiwi.ru/features.action";
    myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0";
    myHttpWebRequest.Accept = "application/json, text/javascript, */*";
    myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip, deflate");
    myHttpWebRequest.Headers.Add("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3");
    myHttpWebRequest.Headers.Add("Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.3");
    myHttpWebRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
    myHttpWebRequest.Headers.Add("Origin", "https://w.qiwi.ru");
    myHttpWebRequest.Headers.Add("X-Requested-With", "XMLHttpRequest");
    //myHttpWebRequest.KeepAlive = true;
    // передаем cookie, полученные в предыдущем запросе
    if (!String.IsNullOrEmpty(sCookies))
    myHttpWebRequest.Headers.Add(HttpRequestHeader.Cookie, sCookies);
    // ставим False, чтобы при получении кода 302 не делать
    // автоматического перенаправления
    myHttpWebRequest.AllowAutoRedirect = false;

    // передаем параметры
    string sQueryString = "source=0&phone=НОМЕР_ТЕЛЕФОНА&password=ПАРОЛЬ_ОТ_КИВИ&captcha=0";
    byte[] ByteArr = System.Text.Encoding.GetEncoding(1251).GetBytes(sQueryString);
    myHttpWebRequest.ContentLength = ByteArr.Length;
    myHttpWebRequest.GetRequestStream().Write(ByteArr, 0, ByteArr.Length);

    // делаем запрос
    HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();


    //парсинг
    string url = "https://w.qiwi.ru/features.action";
    string html = string.Empty;
    string pattern = "Баланс: (.*)";
    HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(url);
    HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
    StreamReader sr = new StreamReader(myResponse.GetResponseStream(), Encoding.GetEncoding(1251));
    html = sr.ReadToEnd();
    Match res;
    res = Regex.Match(html, pattern);
    return res.Groups[1].ToString();

    }
     
  2. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Я особо не присматривался, но как вариант - судя по порту используется Fiddler, на SSL он подсовывает свой сертификат, в коде нету игнорирования проверки подлинности.
    P.S. Using using.
     
  3. amful

    amful New Member

    Joined:
    15 Oct 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    добавил

    System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

    но картина не изменилась..
     
  4. amful

    amful New Member

    Joined:
    15 Oct 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    разобрался с проблемой.
    при граббинге печеньки не передавал.
    спасибо за помощь.