Search code examples
c#httpwebrequest

Create a HttpWebRequest for special HTML input


I need to send a HttpWebRequest to a url with email and password

<input name="Login[email]" id="Login_email" type="text" />
<input name="Login[password]" id="Login_password" type="password" />
<input type="hidden" value="f3b0997e3b6451ecee2840f353b3cf9a69805596" name="fs_csrf" />

How to create HttpWebRequest in server side with email, password and hidden input field above. Thanking you in advance


Solution

  • Try this:

    //getting the hash
    var req = (HttpWebRequest)WebRequest.Create("https://example.com/login");
    var cookies = new CookieContainer();
    req.CookieContainer = cookies;
    string fs_csrf;
    using (var res = req.GetResponse())
    using (var resStream = res.GetResponseStream())
    using (var reader = new StreamReader(resStream)) {
        fs_csrf = new Regex("input.*?hidden.*?value=\"(.*?)\"").Match(reader.ReadToEnd()).Groups[1].Value;
    }
    //submitting form
    req = (HttpWebRequest)WebRequest.Create("https://example.com/login");
    req.CookieContainer = cookies;
    req.Method = "POST"; //i assume it's a post request
    var buffer = Encoding.UTF8.GetBytes("Login[email]=theemail&Login[password]=thepswd&fs_csrf=" + fs_csrf);
    req.ContentLength = buffer.Length;
    using (var reqStream = req.GetRequestStream()) {
          reqStream.Write(buffer, 0, buffer.Length);
    }
    using (var res = req.GetResponse())
    using (var resStream = res.GetResponseStream())
    using (var reader = new StreamReader(resStream)) {
        var respStr = reader.ReadToEnd();
    }