C#如何在解析html时保持连接有效

时间:2019-02-04 11:39:19

标签: c# .net http webclient keep-alive

我正在尝试创建一个小脚本,该脚本可以让您自动登录到php网站。 当我查看通过https发送的POST脚本时,我意识到有一个包含哈希字符串的隐藏输入表单(在登录表单中以CSS可见性隐藏),该表单正在使用电子邮件+密码在数据表单中发送 示例:

login=USERNAME&passwort=PASSWORD&loginhash=1b9f29d68152619b469c3744de3a1f54

实际上,我实际上需要在发布之前执行简单的GET操作以解析出字符串,然后使用loginhash进行POST,但是如何保持该连接有效而又不会获得不再匹配的新哈希? / p>

//GET
    WebRequest req = WebRequest.Create(url);
    WebResponse resp = req.GetResponse();          
    using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
    {
    reqHtml = sr.ReadToEnd();
    }
    cookieHeader = resp.Headers["Set-cookie"];

//Parsing html and storing to var loginhash

//POST
    string formData = string.Format("login={0}&loginhash={1}&passwort={2}", "USERNAME", loginhash, "PASSWORD");
    req.ContentType = "application/x-www-form-urlencoded";
    req.Method = "POST";
    req.Headers.Add("Cookie", cookieHeader);
    byte[] bytes = Encoding.ASCII.GetBytes(formData);
    req.ContentLength = bytes.Length;
    using (Stream os = req.GetRequestStream())
    {
        os.Write(bytes, 0, bytes.Length);
    }

    using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
    {
        pageSource = sr.ReadToEnd();
    }

更新:

意识到,我的理论实际上是错误的,因为我发送了两个带有curl的GET,因此curl会在之前进行管道处理/重用连接。最后,回应中还有两个不同的哈希值。也许哈希只是一种干扰?

0 个答案:

没有答案