Web客户端登录失败
问题描述:
我的代码:Web客户端登录失败
class MyWebClient : WebClient
{
private CookieContainer _cookieContainer = new CookieContainer();
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
(request as HttpWebRequest).CookieContainer = _cookieContainer;
}
return request;
}
}
using (var client = new MyWebClient())
{
var data = new NameValueCollection
{
{ "username", "myUser" },
{ "password", "myPw" }
};
client.UploadValues("http://www..tv/takelogin.php", data);
}
答
我发现这个问题...
client.UploadValues("http://www..tv/takelogin.php", data);
改为:
client.UploadValues("http://.tv/takelogin.php", data);
这意味着:
http://www.MY_SITE.tv
不工作,但
http://MY_SITE.tv
工作正常。
答
传递一个CookieContainer
通常会诀窍,但您已经发送它。你能确认字段名称吗?
此外,对于某些网站,您需要回发隐藏的字段。我通常在登录页面执行GET
,并使用HTML解析器(如HtmlAgilityPack
),找到适当的表单并找到所有INPUT/SELECT字段的登录请求。
我认为这里最好的建议是使用调试代理,如Fiddler
,并尝试从浏览器执行登录并检查生成的流量。