#c#
#c#
Вопрос:
В настоящее время я пытаюсь войти на веб-сайт и отправить форму после входа на веб-сайт.
Я пытался просмотреть все поля ввода и добавить его в код, но по-прежнему безуспешно.
Веб-сайт, на который я пытаюсь войти, являетсяhttp://sythe.org/login /
Вот что у меня сейчас есть:
string formUrl = "http://www.sythe.org/login/";
string formParams = string.Format("login={0}amp;password={1}amp;_xfToken={2}amp;register={3}amp;remember={4}amp;cookie_check={5}amp;redirect={6}", "", "", "", "0", "1", "1", "https://sythe.org");
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;
using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
pageSource = sr.ReadToEnd();
}
Console.WriteLine(pageSource);
Спасибо, ребята.
Комментарии:
1. С какой проблемой вы столкнулись?
2. Возможно, если вы действительно сообщите нам, в чем ошибка, кто-нибудь сможет вам помочь. Просто сказать «Ошибка при отправке формы входа» не очень помогает.
3. @Steve это не вход в систему.
Ответ №1:
Вы можете попробовать этот код, который сгенерирован с помощью плагина C # для Fiddler:
private void MakeRequests()
{
HttpWebResponse response;
if (Request_www_sythe_org(out response))
{
response.Close();
}
}
private bool Request_www_sythe_org(out HttpWebResponse response)
{
response = null;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.sythe.org/login/login");
request.KeepAlive = true;
request.Headers.Set(HttpRequestHeader.CacheControl, "max-age=0");
request.Headers.Add("Origin", @"https://www.sythe.org");
request.Headers.Add("Upgrade-Insecure-Requests", @"1");
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36";
request.Accept = "text/html,application/xhtml xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3";
request.Referer = "https://www.sythe.org/";
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-GB,en-US;q=0.9,en;q=0.8");
request.Headers.Set(HttpRequestHeader.Cookie, @"__cfduid=de8826b5a5df064d6f2ccf2d0952ce52d1554285418; _ga=GA1.2.1744286790.1554285420; _gid=GA1.2.1835584013.1554285420; G_ENABLED_IDPS=google; sythe_bug_token=c0FFSCNAJio4MzJnZWEjWXlaV1NCempSdWFrUzRnUHVZUXJKOENicnkwSmZFTXROR1M3MDhUR1ovWTFIVmlvRFZaaVN2MjFHRWtaM2JhT0N1bTJHbEdGSG5VY1dUNjdmVGNZd1RoekNmTmgzaHB4T29OTTZkNytJQWh3cDdjeWlndWpidkJFY0NiRXF4b1ljSVJhN2VGVVd2eEsvK2hrak1pclhvYjRFeWRhT09UUU5seXZDUVlETDlYWUUyazZGajRub3VWV0k5aVhkVVJiWUtxcFRuaTljRElnWEVKd2o4T3ZSZlRheFEzRWRzekgxSXN4d0doMS9YRFR6L1d0OGRONUVLcDZHUEN3eVFRWEQ=; _gat=1; xf_session=63943f38ebba0827a4208d363cae5dcb");
request.Headers.Add("AlexaToolbar-ALX_NS_PH", @"AlexaToolbar/alx-4.0.3");
request.Method = "POST";
request.ServicePoint.Expect100Continue = false;
string body = @"login=testtest@testtest.testtestamp;register=0amp;password=testtesttesttestamp;remember=1amp;cookie_check=1amp;redirect=/amp;_xfToken=";
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
request.ContentLength = postBytes.Length;
Stream stream = request.GetRequestStream();
stream.Write(postBytes, 0, postBytes.Length);
stream.Close();
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException e)
{
if (e.Status == WebExceptionStatus.ProtocolError) response = (HttpWebResponse)e.Response;
else return false;
}
catch (Exception)
{
if(response != null) response.Close();
return false;
}
return true;
}
Комментарии:
1. Большое спасибо за ответ. Я сделал это и попытался вывести его, но все, что я получаю, — это специальные символы. Как я узнаю, действительно ли она отправлена и выполнен вход в систему?
2. Если вы получаете true, это означает, что вы можете отправить необходимые данные для успешного входа. Каждый веб-сайт индивидуален и может иметь различный набор средств защиты, и этот код предназначен только для того, чтобы дать вам представление. Вам, безусловно, придется внести правки, чтобы иметь возможность направлять дальнейшие запросы.
3. Если вы просто получаете специальный символ, тогда вы можете безопасно удалить запрос. Headers.Set(HttpRequestHeader. AcceptEncoding, «gzip, deflate, br»); или запрос. Headers.Set(HttpRequestHeader. Примите язык «en-GB, en-US; q = 0.9, en; q = 0.8»); чтобы посмотреть, что вы получите
4. И кстати, как я уже сказал, это просто для того, чтобы дать вам представление; В будущем лучше использовать экземпляр ожидаемого HttpClient для веб-запросов.
5. Итак, он все еще не вошел в систему. Возвращает домашнюю страницу, но как не авторизованный.
Ответ №2:
попробуйте заменить string formUrl = "http://www.sythe.org/login/";
на string formUrl = "http://www.sythe.org/login/login";