我尝试登录一个我不想使用C#命名的网站。 在php站点上,有两种形式的输入,分别称为“ httpd_username”和“ httpd_password”。登录按钮的属性为“ type = submit”。
我不知道为什么,但是不起作用
我尝试了许多堆栈溢出问题中的几个代码示例。 我想出的最后一个是
var request = (HttpWebRequest)WebRequest.Create(loginpage);
var postData = "httpd_username=" + textBox1.Text;
postData += "&httpd_password=" + textBox2.Text;
postData += "&form=submit";
var data = Encoding.ASCII.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
MessageBox.Show(responseString);
但是输入正确的凭据并不重要,在两种情况下,响应中返回的都是相同的html代码。
应该显示Web面板的html代码,但是响应返回登录html代码的html代码。
亲切的问候
编辑:使用此python代码可以正常工作:
response = browser.open(url)
browser.method = "POST"
for password in wordlist:
browser.select_form(nr=0)
browser.form['httpd_username'] = username
browser.form['httpd_password'] = password.strip()
response = browser.submit()
newUrl = response.geturl()
答案 0 :(得分:0)
使用Mechanize的.NET版本Mechanize.NET解决。