Авторизация списка акков вконтакте

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by zORG, 5 Nov 2010.

  1. zORG

    zORG New Member

    Joined:
    5 Jun 2010
    Messages:
    44
    Likes Received:
    2
    Reputations:
    0
    Доброго времени суток.
    Пишу софтинку для работы в вк списка аккаунтов.
    Акк вступает в группу и отписывается в теме к примеру.
    Всё отлично, но когда начал прикручивать список акков, стала случаться непонятная вещь.
    Из списка 2 акка подряд авторизируются нормально, на 3-м всегда ошибка из-за истечения таймаута запроса при авторизации и хоть убей,
    всегда на 3-м акке. :rolleyes:
    Все акки - валид. Это может какая-то особенность контакта? Кто сталкивался?
    Какие предположения?
     
  2. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Это особенность кода. Вконтакте все нормально.
     
  3. zORG

    zORG New Member

    Joined:
    5 Jun 2010
    Messages:
    44
    Likes Received:
    2
    Reputations:
    0
    на шарпе пишу.

    Code:
    public static string Login(string Email, string Pass)
    {
          HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(@"http://vkontakte.ru/login.php");
          WebReq.Method = "POST";
          WebReq.AllowAutoRedirect = false;
          WebReq.ContentType = "application/x-www-form-urlencoded";
          WebReq.Timeout = 12000;
          byte[] sentData = Encoding.GetEncoding(1251).GetBytes("email=" + Email + "&pass=" + Pass);
          WebReq.ContentLength = sentData.Length;
          Stream sendStream = WebReq.GetRequestStream();
          sendStream.Write(sentData, 0, sentData.Length);
          sendStream.Close();
          WebResponse result = WebReq.GetResponse();
          string sCookies = "";
          string remixsid = null;
          if (!String.IsNullOrEmpty(result.Headers["Set-Cookie"]))
          {
               sCookies = result.Headers["Set-Cookie"];
               var lines = sCookies.Split(';', ',');
               foreach (var l in lines)
               if (l.Contains("remixsid="))
               {
                     remixsid = l.Remove(0, "remixsid=".Length);
                     break;
               }
          }
          return remixsid;
    }
    
    собственно на строке

    Code:
    WebResponse result = WebReq.GetResponse();
    и вылетает по таймауту. Ставил даже 30 секунд.
    2 акка нормально, на 3-м всё повторяется.... :eek:
     
    #3 zORG, 5 Nov 2010
    Last edited: 5 Nov 2010
  4. zORG

    zORG New Member

    Joined:
    5 Jun 2010
    Messages:
    44
    Likes Received:
    2
    Reputations:
    0
    решилось добавлением небольшой задержки в сам цикл, оказалось 2 запроса очень быстро отправлялись друг за другом.
     
  5. zORG

    zORG New Member

    Joined:
    5 Jun 2010
    Messages:
    44
    Likes Received:
    2
    Reputations:
    0
    хотя нет, авторизацию переделал, все так и осталось. Работает через локальных прокси отлично
    ( через Fiddler ). А напрямую нет...
     
    #5 zORG, 6 Nov 2010
    Last edited: 20 Jan 2013
  6. Hellow

    Hellow Banned

    Joined:
    10 Aug 2010
    Messages:
    8
    Likes Received:
    3
    Reputations:
    0
    А логоф закодил под каждый акк?
     
  7. zORG

    zORG New Member

    Joined:
    5 Jun 2010
    Messages:
    44
    Likes Received:
    2
    Reputations:
    0
    нет, зачем?
    авторизировался, получил куки, подставляю их в запрос,
    делаю что нужно, потом авторизирую следующий акк и в переменную записываются
    уже новые куки и дальше опять по кругу.
     
  8. zORG

    zORG New Member

    Joined:
    5 Jun 2010
    Messages:
    44
    Likes Received:
    2
    Reputations:
    0
    тьфу-тьфу, вроде решилось.
    оказалось надо закрывать все респонзы, стримы и ридеры, хотя по идее они должны были сами закрыться/удалиться, как и локальные переменные.
     
  9. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Кстати да, они реализуют IDisposable же, их лучше использовать как using() {}
    Хорошая мысля приходит опосля