2010-11-08 4 views
0

Я пытаюсь войти на сайт, используя скребок экрана, и у меня возникают трудности.Скребок экрана C#, обрабатывающий логин с помощью POST

private static string GetWebRequestContent(Uri uri) 
    { 
     string sid = String.Empty; 

     string userName = "username"; 
     string password = "password"; 
     string postData = string.Format("FormName=Login&Login={0}&Password={1}&FormAction=login&ret_page=%2FDefault.asp&querystring=",userName,password); 
     byte[] postBytes = Encoding.UTF8.GetBytes(postData); 


     HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uri); 
     req.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.2; .NET4.0C; .NET4.0E; MS-RTC LM 8)"; 
     req.KeepAlive = false; 
     req.Proxy = new WebProxy(IPAddress,PORT); 
     req.Method = "POST"; 
     req.Host = host; 
     req.Referer = referer; 
     req.ContentType = "application/x-www-form-urlencoded"; 
     req.ContentLength = postBytes.Length; 

     StreamWriter requestwriter = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII); 
     requestwriter.Write(postData); 
     requestwriter.Close(); 

     try 
     { 
      using (HttpWebResponse res = (HttpWebResponse)req.GetResponse()) 
      { 
       using (StreamReader sr = new StreamReader(res.GetResponseStream())) 
       { 
        sid = sr.ReadToEnd().Trim(); 
       } 
      } 
     } 
     catch (WebException e) 
     { 
      Console.WriteLine(uri.ToString()); 
      Console.WriteLine(e.Message); 
     } 

     return sid; 
    } 

Все, что я получаю, это форма входа в систему, она никогда не регистрирует меня. Любые идеи?

ответ

0

Попробуйте отслеживать, какой запрос отправлен в вашем браузере, а затем повторите его в своем сценарии. Существуют различные расширения Firefox, которые помогут вам сделать это, например TamperData, Firebug и LiveHttp.

Смежные вопросы