【问题标题】:How to acess a website using own asp.net page?如何使用自己的 asp.net 页面访问网站?
【发布时间】:2011-12-20 11:59:33
【问题描述】:

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

http://sms80.com

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

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

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

your_url.aspx?your_url_variable=" + @variable_from_form

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

【问题讨论】:

  • 我认为你需要先读一本关于黑客的书 :)

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


【解决方案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.)

【讨论】:

  • 我有点困惑。该 URL 应在此代码中的何处指定?
  • @Memoc - 在第一行...我编辑了我的答案,以便更清楚
  • 用户名和密码变量是否取决于网站使用的变量?
  • @Memoc - 当然。这就是为什么您需要查看 Fiddler 中实际的 POST 字符串是什么。
  • 我尝试了 fiddler 并尝试在登录网站时捕获信息。只有在此信息中,我才能看到用户名和密码的信息。 __VIEWSTATE =%2FwEPDwULLTE2MDEyNzQzMzlkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBQlDaGVja0JveDEFDEltYWdlQnV0dG9uMWQ2rgFGJ5PiJmdWBMPoZyWAaM3r&__ EVENTVALIDATION =%2FwEWBgK1l9vrAgL18o7vBgKl1bKzCQK1qbSRCwKC5Ne7CQLSwpnTCBSSvVcn5Urce12hrsf9C0VQPMAk&AID = 2&txtUserName = 0149116028&txtPassword = genelia&ImageButton1.x = 52&ImageButton1.y = 22是装置txtUserName和txtPassword其变量?假设它是一个文本框名称。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    相关资源
    最近更新 更多