Кто-нибудь знает, как проверять парсинг веб-сайтов, использующих дайджест-аутентификацию http? Я использую такой код:
var request = (HttpWebRequest)WebRequest.Create(SiteUrl);
request.Credentials=new NetworkCredential(Login, Password)
Я могу получить доступ к главной странице сайта, но когда я пытаюсь перейти на любые другие страницы (используя другой запрос с теми же учетными данными), я получаю ошибку «HTTP / 1.1 400 Bad Request».
Я использовал Fiddler для сравнения запросов моего приложения C # с запросами Mozilla Firefox.
Я пытаюсь получить доступ к двум URL-адресам: https://mysiteurl/forum/index.php https: //mysiteurl/forum/viewforum.php? f = 4 & sid3e = d4685204363
Вот 2 запроса () моего приложения на C #:
Authorization: Digest username="xxx",realm="abc",nonce="NXa26+NjBAA=747dfd1776c9d585bd388377ef3160f1ff265429",uri="/forum/index.php",algorithm="MD5",cnonce="89179bf17dd27785aa1c88ad976817c9",nc=00000001,qop="auth",response="3088821620d9cbbf71e775fddbacfb6d"
Authorization: Digest username="xxx",realm="abc",nonce="1h7T6+NjBAA=4fed4d804d0edcb54bf4c2f912246330d96afa76",uri="/forum/viewforum.php",algorithm="MD5",cnonce="bb990b0516a371549401c0289fbacc7c",nc=00000001,qop="auth",response="1ddb95a45fd7ea8dbefd37a2db705e3a"
И вот что Firefox отправляет на сервер:
Authorization: Digest username="xxx", realm="abc", nonce="T9ICNeRjBAA=4fbb28d42db044e182116ac27176e81d067a313c", uri="/forum/", algorithm=MD5, response="33f29dcc5d70b61be18eaddfca9bd601", qop=auth, nc=00000001, cnonce="ab96bbe39d8d776d"
Authorization: Digest username="xxx", realm="abc", nonce="T9ICNeRjBAA=4fbb28d42db044e182116ac27176e81d067a313c", uri="/forum/viewforum.php?f=4&sid=d104363e563968b4e4c07e04f4a15203", algorithm=MD5, response="a996dae9368a79d49f2f29ea7a327cd5", qop=auth, nc=00000002, cnonce="e233ae90908860e1"
Итак, в моем приложении у меня разные значения в поле «nonce», тогда как в Firefox это поле такое же. С другой стороны, у меня такие же значения в поле «nc», в то время как Firefox увеличивает это поле.
Кроме того, когда мое приложение пытается получить доступ к страницам сайта в Fiddler, я вижу, что оно всегда получает ответ «Требуется авторизация HTTP / 1.1 401», в то время как Firefox авторизует только один раз. Я пробовал установить request.PreAuthenticate = true; но вроде не действует ...
У меня вопрос: как правильно реализовать дайджест-аутентификацию с помощью C #? Есть какие-то стандартные методы или надо делать с нуля? Заранее спасибо.