0

みんな私はhttp://waec2013.com/waecexam/ウェブサイトにログインしようとしています

  1. HttpWebRequest
  2. クッキーコンテナ

Webブラウザを使用できる別の手法がありますが、これはWebアプリケーションであるため、Webブラウザを使用できません。しかし、その Web サイトにログインして特定のデータを取得できる可能性はありますか?

私はリバースエンジニアリングを行い、コーディングを行いますが、結果を達成できません。

助言がありますか

     string formUrl = "http://waec2013.com/waecexam/"; 
     string formParams = string.Format("adminName={0}&adminPass={1}&act={2}",
     "passwaec", "cee660","login");
     string cookieHeader;
     WebRequest req = WebRequest.Create(formUrl);
     req.ContentType = "application/x-www-form-urlencoded";
     req.Method = "POST";
     byte[] bytes = Encoding.ASCII.GetBytes(formParams);
     req.ContentLength = bytes.Length;
     using (Stream os = req.GetRequestStream())
     {
         os.Write(bytes, 0, bytes.Length);
     }
     WebResponse resp = req.GetResponse();
     cookieHeader = resp.Headers["Set-cookie"];

     string pageSource;
     string getUrl = "http://waec2013.com/waecexam/Leads.php";
     WebRequest getRequest = WebRequest.Create(getUrl);
     getRequest.Headers.Add("Cookie", cookieHeader);
     WebResponse getResponse = getRequest.GetResponse();
     using (StreamReader sr = new StreamReader(getResponse.GetResponseStream()))
     {
        pageSource = sr.ReadToEnd();
    }
4

2 に答える 2

1

最後に、私は自分の質問を解決し、必要に応じて投稿します。

 public class CookiesAwareWebClient : WebClient
 {
    public CookieContainer CookieContainer { get; private set; }

    public CookiesAwareWebClient()
    {
        CookieContainer = new CookieContainer();
    }

    protected override WebRequest GetWebRequest(Uri address)
    {
        var request = base.GetWebRequest(address);
        ((HttpWebRequest)request).CookieContainer = CookieContainer;
        return request;
    }
  }

   using (var client = new CookiesAwareWebClient())
    {
        var values = new NameValueCollection
        {
            { "adminName", "passwaec" },
            { "adminPass", "cee660" },
            { "x", "0" }, 
            { "y", "0" }, 
            { "act", "login" },
        };

        // We authenticate first
        client.UploadValues("http://waec2013.com/waecexam/index.php", values);

        // Now we can download
        client.DownloadFile("http://waec2013.com/waecexam/leadExp.php?act=export",
        @"c:\abc.txt");
      }
于 2013-02-12T11:08:56.473 に答える
0

メソッドの最初にこれを追加します。

var cookies = new CookieContainer();

Cookie をインスタンス化されたリクエストに割り当てる webrequest を作成する各行の後:

WebRequest req = WebRequest.Create(formUrl);
req.CookieContainer = cookies;

これにより、着信 Cookie がすべて保存され、GET POST 時にコンテナー内のすべての Cookie が Web サーバーに送信されます。

その場合、Set-Cookie ヘッダーを使用する必要はありません。

于 2013-02-12T07:33:51.273 に答える