C # вход на веб-страницу не работает, но команда cURL работает правильно - PullRequest
0 голосов
/ 28 марта 2019

У меня есть вопрос по поводу моего кода C #.Я пишу программу, которая сначала авторизуется на веб-странице, а затем добавляет какой-то вклад в веб-страницу после ...

Я делал это раньше, копирую команду cURL (bash) и затем запускаю ее в GitBash, и она работаетхорошо.

Теперь я сделал это снова, и один из заголовков - XSID, это что-то вроде идентификатора для правильного добавления вклада в веб-страницу, и он генерируется на сервере (возможно).XSID очень важен для меня, потому что без этого XSID, который обновляется после входа в систему, у меня нет доступа к добавлению материалов на веб-страницу.

cURL Команда и эхо в GitBash:

Wittner@HP-POWER15-WITTNER MINGW64 ~
$ curl 'https://imhd.sk/po/prihlasenie.php' -i -s -H 'Content-Type: application/x-www-form-urlencoded' -H 'Cookie: cookie_notice=1;' -d 'login=user123&password=password'

HTTP/1.1 302 Found
Server: nginx/1.15.5
Date: Wed, 27 Mar 2019 21:48:41 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 0
Connection: keep-alive
X-Powered-By: PHP/5.6.38
Set-Cookie: xsid=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/
Set-Cookie: xsid=1f3021122747dba70b9e4ab3b5f94d54; path=/; secure
Location: /po/

Как мне грустно, в GitBash все хорошо, и у меня есть этот XSID, но проблема в том, что у меня нет этого XSID вConsoleProgram в C # и GitBash.

Код в C #:

 public static async Task ProgramAsync() {

            ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
            HttpClient client = new HttpClient(new HttpClientHandler { UseCookies = false });

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://imhd.sk/po/prihlasenie.php?target=vyprava");



            request.Content = new StringContent("login=user123&password=password", Encoding.UTF8, "application/x-www-form-urlencoded");
            client.DefaultRequestHeaders.Add("Cookie", "cookie_notice=1");

            var response = await client.SendAsync(request);

            Console.WriteLine(response);

        }

Эхо в C # без XSID:

StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Transfer-Encoding: chunked
  Connection: keep-alive
  X-UA-Compatible: IE=edge,chrome=1
  Date: Wed, 27 Mar 2019 22:17:25 GMT
  Set-Cookie: default_web=po; expires=Thu, 26-Mar-2020 22:17:25 GMT; Max-Age=31536000; path=/; domain=imhd.sk
  Server: nginx/1.15.5
  X-Powered-By: PHP/5.6.38
  Content-Type: text/html; charset=UTF-8
}

Другая проблема заключается в том, что в GitBash это HTTP 302 Найденои в ConsoleProgram это HTTP 200 ОК.

Что я должен изменить в своем коде, чтобы получить такой же запрос с XSID, как в GitBash?

Большое спасибо!

...