我正在尝试编写一个登录Verizon网站的小程序,然后检查该月剩余的分钟数.我需要帮助找出如何使用C#登录网站.我知道我需要使用webrequest发布登录信息,但我不知道如何去做.登录表单的网站是https://login.verizonwireless.com/amserver/UI/Login,但我不确定我要发布到网站登录的信息以及如何操作.以下是我发现的网站来源.如果有人可以帮我弄清楚如何从C#程序登录,我将非常感激.感谢您的任何帮助.
形式方法= "POST"自动填充= "关"动作= "https://login.verizonwireless.com:443/amserver/UI/Login"名称= "登录表单" ID = "登录表单"的onsubmit ="返回disableBut(); ">
输入类型="隐藏"名称= "域"值= "VZW"/>
输入类型= "隐藏"名称= "GOTO"值= ""/>
输入类型= "隐藏"名称= "gotoOnFail"值= ""/>
输入类型= "隐藏"名称= "gx_charset"值= "UTF-8"/>
输入类型= "隐藏"名称= "rememberUserNameCheckBoxExists"值= "Y"/>
H2风格="填充左: 0px;">登录我的Verizon
div class ="clear10">/div>
首先,您缺少两个重要字段:) 如果您查看 HTML,就会发现表单中还有两个附加字段 — IDToken1(用户名)和IDToken2(密码)。
如果您将这些提供给 POST 请求,您应该会得到一些 cookie,然后您可以在后续请求中使用它们。这些会将您识别为登录用户。
当然,我无法完全测试这一点,因为我没有有效的登录,但这是一个开始:
class VerizonLogin
{
CookieContainer Cookies = new CookieContainer();
void Main()
{
Login("test","testpass");
// Now the cookies in "Cookies" are all set.
// Ensure you set CookieContainer on all subsequent requests
}
void Login(string username, string password)
{
var wr = (HttpWebRequest)WebRequest.Create("https://login.verizonwireless.com:443/amserver/UI/Login");
wr.Method = "POST";
wr.ContentType = "application/x-www-form-urlencoded";
wr.Referer = "https://login.verizonwireless.com/amserver/UI/Login"; // my tests show this is needed
wr.CookieContainer = Cookies;
var parameters = new Dictionary<string,string>{
{"realm", "vzw"},
{"goto",""},
{"gotoOnFail",""},
{"gx_charset", "UTF-8"},
{"rememberUserNameCheckBoxExists","Y"},
{"IDToken1", username},
{"IDToken2", password}
};
using (var requestStream = wr.GetRequestStream())
using (var writer = new StreamWriter(requestStream,Encoding.UTF8))
writer.Write(ParamsToFormEncoded(parameters));
using (var response = (HttpWebResponse)wr.GetResponse())
{
// here you need to detect a correct login... this might be one of the cookies.
// if incorrect throw an exception or something.
}
}
string ParamsToFormEncoded(Dictionary<string,string> parameters)
{
return string.Join("&", parameters.Select(kvp =>
Uri.EscapeDataString(kvp.Key).Replace("%20","+") + "=" + Uri.EscapeDataString(kvp.Value).Replace("%20","+")
).ToArray());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2288 次 |
| 最近记录: |