C # Как сохранить соединение во время анализа HTML - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь создать небольшой скрипт, который позволяет автоматически входить на сайт php.Когда я посмотрел сценарий POST, отправляемый через https, я понял, что существует скрытая форма ввода со строкой хеша (в форме входа, скрытой с видимостью css), которая отправляется в форме данных с помощью email + пароль. Пример:

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

Так что на самом деле мне нужно выполнить простое действие GET перед публикацией, чтобы разобрать строку, а затем выполнить POST с loginhash, но как мне сохранить это соединение живым, не получая новый хешчто больше не соответствует?

//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();
    }

Обновление:

Понял, что моя теория на самом деле неверна, так как я отправил два GET с curl, так что curl передаст / повторно использует соединение раньше.В конце были еще два разных хэша в ответах.Может быть, хэш - это просто отвлечение?

...