0

Я пытаюсь войти на сайт, используя CookieAwareClient (код здесь: C# WebClient Log onto Website). Когда я вхожу на сайт с помощью своего веб-браузера, я получаю около 10 файлов cookie. Если я отключу JavaScript и попытаюсь войти в систему, я получаю 5 (activeTab, id, mcim, PHPSESSID, username). Но когда я пытаюсь войти в систему с помощью CookieAwareClient, единственным сохраненным файлом cookie является PHPSESSID.Не все файлы cookie сохраняются с использованием cookiecontainer и webclient/httpwebrequest

В чем причина того, что другие куки не будут сохранены? Я знаю, что WebClient не выполняет JavaScript, но не сохраняются три других файла cookie, которые генерируются при отключении JavaScript.

ответ

2

Во-первых, очевидный вопрос: прежде чем отключить скрипт в своем браузере и попытаться войти в систему, вы сначала очистили свои файлы cookie? Если нет, очистите файлы cookie и повторите попытку.

Предполагая, что вы сначала очистили файлы cookie и все еще получили 5 новых файлов cookie после входа в систему без сценария, а затем просмотрев отсутствующие имена файлов cookie, я бы предположил, что ваш CookieAwareClient фактически не выполняет вход в систему пользователя. Отсутствие cookie «username» - это то, что я ожидал бы, если логин не удался. Когда вы просматриваете HTML-код, возвращаемый вашим логином, выглядит ли он как успешный логин? Или он возвращает какую-то ошибку?

Если возвращенный HTML является успешным логином, то следующий возможный виновник, на который я бы посмотрел, будет дополнительным запросом, выполняемым браузером, но не выполненным кодом. Например, на странице входа может быть META REFRESH, который перенаправляется на другую страницу (которая устанавливает файл cookie). Или страница входа может содержать IFRAME, IMG, SCRIPT и т. Д., Которые, в свою очередь, устанавливают файл cookie. Чтобы диагностировать это, используйте Fiddler, Firebug или другой подобный инструмент, чтобы узнать, какие конкретные HTTP-запросы выполняются вашим браузером как часть процесса входа в систему. Убедитесь, что POST на странице входа выполняет все настройки cookie, а если нет, то после первого входа вам нужно будет добавить дополнительные запросы к вашему коду.

Если окажется, что есть только один параметр HTTP-запроса, то проблема заключается в том, что это HTTP-заголовки или данные POST, которые ваш код отправляет (или не отправляет) на сервер. Возможно, браузер отправляет разные заголовки или данные POST. Диагностика этого также требует Firebug, Fiddler или аналогичного инструмента для сравнения HTTP-заголовков и POST-данных, которые браузер передает, и от того, что отправляет ваш код.

Если ни одно из этих предложений не работает, опубликуйте комментарий, и мы можем выполнить итерацию.

Смежные вопросы