我想使用asp.net将用户名和密码发布到远程网站的登录页面,并通过它来访问网站上需要登录的页面。 换句话说,假设网站上有一个页面,我会用它来抓取一些东西,但在它之前需要登录。 如何调用该登录页面并发布来自asp.net应用程序的用户名和密码来传递它。以编程方式登录页面的用户名和密码
在此先感谢
我想使用asp.net将用户名和密码发布到远程网站的登录页面,并通过它来访问网站上需要登录的页面。 换句话说,假设网站上有一个页面,我会用它来抓取一些东西,但在它之前需要登录。 如何调用该登录页面并发布来自asp.net应用程序的用户名和密码来传递它。以编程方式登录页面的用户名和密码
在此先感谢
以将它们作为查询字符串仅适用于GET
参数评论。这适用于POST
。正如你可以看到我使用表格条目username
,password
和login
(按钮),但在你的情况下,它可能是完全不同的值。因此,使用像Fiddler这样的工具来捕获正常登录正在发送的值。当我做了类似的事情时,我不得不使用cookie识别的web客户端,因为服务使用cookies来获取会话值。您尝试访问的服务可能使用查询会话字符串 - 它完全取决于服务。
我这样做时遇到的另一个问题是,我不得不从HTML页面获取会话ID并发送它来记录它。我还没有列入该代码在这里,但我有它,如果你需要它:)
var client = new CookieAwareWebClient();
client.Encoding = Encoding.UTF8;
// Post values
var values = new NameValueCollection();
values.Add("username", someusername);
values.Add("password", somepassword);
values.Add("login", "Login"); //The button
// Logging in
client.UploadValues(loginPageUrl, values); // You may verify the result. It works with https :)
// Download some secret page
var html= client.DownloadString(someurl);
CookieAwareWebClient
public class CookieAwareWebClient : 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;
}
}
感谢lasseespeholt 但是NameValueColection的那些第一个参数是什么? 是否有控件的名称或标识? 最后一个(values.Add(“login”,“Login”););第一和第二参数? – 2011-05-03 13:48:49
@ user711861您需要找到您自己发送的值。我假设你无法控制该网站(否则这是一个非常糟糕的方式)。我推荐Fiddler,你可以看到发回的值。 'name = login,value = Login'就是我必须发送的一个按钮,所以这个调用就像按下按钮一样。 – 2011-05-04 05:06:22
我明白这是一个旧的评论,但你的代码确实帮了我。但是,再次,如果我尝试在验证之后打开一个链接,它会退出,我该如何将这个html字符串放在cuz后面的代码中。但是,如果我使用您的验证者,即client.DownloadString(..“,那么它显示我登录。 – Ratan 2012-12-04 21:30:07
让我们假设你想redriect到www.ABC.com
构建查询字符串等
http://abc.com/products.aspx?field1=value1&field2=value2
的d在另一页上获取该值。但recomended使用POST方法,希望这有助于
尝试阅读本 - >http://www.terminally-incoherent.com/blog/2008/05/05/send-a-https-post-request-with-c/
如果你使用Firefox - 下载“篡改数据”和“活的HTTP报头”,看看是什么样的信息传递给登录网站
与数据在POST
后的用户名和密码在查询字符串传递到活页的HTTP报头就可以看到。 – atoMerz 2011-05-03 12:59:40
请不要以纯文本形式进行此操作。你只是在问问题。 – 2011-05-03 13:05:29