簡體   English   中英

如何使用自己的asp.net頁面訪問網站?

[英]How to acess a website using own asp.net page?

我在這里想調用另一個網站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

但這似乎沒有用。 還有其他方法嗎?

如果另一個網站沒有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.)

您在問題中描述的內容稱為“使用GET發送表單參數” 即使您可以在此處進行干預並模仿來自HTML表單的數據請求,服務器也可能會在HTTP標頭中檢查其他數據,例如引用網頁(應該是表單的頁面!),並拒絕執行您的請求。 我可以想象一個設計用於發送SMS的站點可能具有這種保護機制。

實現此功能的正確方法是請求訪問API,例如,您可能會從應用程序調用以執行某些操作(例如發送SMS)的Web服務。 這可能不如從網絡表單發送SMS便宜,但這是將此功能嵌入到您的應用程序中的唯一合法方法!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM