У меня возникли проблемы при попытке аутентификации пользователя с использованием кода C # на форуме PHP.
Пока что попробовал:
webClient.Credentials = new NetworkCredential("Me", "MyPassword");
затем:
HtmlDocument webPage = new HtmlDocument();
webPage.Load(new MemoryStream(client.DownloadData(this.websiteUri)));
Я устал также добавлять информацию о cookie в заголовок WebClient.
Более того я попробовал:
using (WebClient client = new WebClient())
{
byte[] response = client.UploadValues(url, new NameValueCollection()
{
{ "usrname", "myLogin" },
{ "password", "p@ssw0rd" }
});
string result = System.Text.Encoding.UTF8.GetString(response);
}
Как я могу проверить результаты?
Я делаю что-то не так? Какие-либо предложения?
Спасибо!
Вероятно, этот форум PHP использует своего рода вход в систему на основе форм. Для входа в этом случае вам нужно отправить запрос POST на соответствующую страницу. Чтобы проверить, к какой странице вы должны обратиться, вы должны проверить HTML-код форума.
Ниже вы видите форму входа для форума Simple Machines, проверенного с помощью Chrome Developer Tools.
Адрес для звонка вы можете найти в собственности action
из form
тег. В ваш запрос POST вам нужно будет включить поля user
а также password
,
Как видите, форма содержит также некоторые токены против подделки, которые усложняют автоматизацию этого запроса. Это очень распространенное явление, поэтому вам, вероятно, потребуется выполнить некоторый анализ HTML, прежде чем вы сможете войти в систему.
Других решений пока нет …