如何使用自己的asp.net页面访问网站?

时间:2011-12-20 11:59:34

标签: c# asp.net visual-studio sms

我在这里想要调用另一个网站网址,登录到它,并使用我的asp.net项目使用其中一个功能。我正在asp.net上开展一个项目,我的网络程序会将短信发送到手机上。由于我不想订阅任何网关或类似网站,我找到了这个网站:

http://sms80.com

现在我想要做的是,从我的asp.net页面我需要访问这个网站,登录并使用它的服务,但所有这一切都必须在我的asp.net页面中以编程方式隐藏。

我以某种方式检查了网站元素,例如登录名文本框和密码文本框。我不是想要黑客攻击,但我只需要知道我在该网站上做的过程(我使用我的帐户登录,然后编写我的消息并编写手机号码并发送),以编程方式在我的asp.net中。

我做了一些研究,发现我可以直接发送或传递值,例如:

your_url.aspx?your_url_variable=" + @variable_from_form

但它似乎不起作用。有没有其他办法呢?

2 个答案:

答案 0 :(得分:1)

如果其他网站没有以编程方式登录的API,则不是一个简单的过程。

这需要大量的探索性工作,并分析您尝试登录的网站的工作原理。该流程包括首先使用Fiddler等工具确定请求/响应通信发布数据中发送的内容。

然后,您需要使用HttpWebRequest / HttpWebResponse类或WebClient类构建一系列GET和POST,以便您可以模仿浏览器的操作方式。

一个例子是:

string url = "http://sms80.com";
HttpWebRequest http = (HttpWebRequest)WebRequest.Create(url);
http.CookieContainer = _cookieJar;
http.Connection = "Keep-alive";
http.Method = "POST";
http.ContentType = "application/x-www-form-urlencoded";
string postData="username=" + username + "&password=" + password;
byte[] dataBytes = UTF8Encoding.UTF8.GetBytes(postData);
http.ContentLength = dataBytes.Length;
Stream postStream = http.GetRequestStream();
postStream.Write(dataBytes, 0, dataBytes.Length);
postStream.Close();
// see if we're logged in
HttpWebResponse httpResponse = (HttpWebResponse)http.GetResponse();
// continue (read the response etc.)

答案 1 :(得分:0)

您在问题中描述的内容称为"sending form parameters using GET"。即使您可以在此处进行干预并模仿HTML表单中的数据请求,服务器也可能会检查HTTP标头中的其他一些数据,例如引用网页(应该是表单的页面!)并拒绝执行您的请求。我可以想象一个用于发送短信的网站可能有这种保护机制。

实现此功能的正确方法是请求访问API,例如您可以从应用程序调用的Web服务,以执行某些操作,例如发送SMS。这可能不如从webform发送SMS那么便宜,但这是在您的应用程序中嵌入此功能的唯一合法方法!