Я пытаюсь создать небольшой скрипт, который позволяет автоматически входить на сайт 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 передаст / повторно использует соединение раньше.В конце были еще два разных хэша в ответах.Может быть, хэш - это просто отвлечение?