2011-03-15 144 views
3

嘿,夥計們,我正在嘗試製作一個網站,可以爲用戶登錄其他網站,並獲取特定信息。例如:一個基於網絡的遊戲論壇,可以自動提取您的遊戲統計數據。我的網站必須導航到遊戲url,填寫用戶名和密碼,登錄,然後在登錄後閱讀html(這是簡單的部分,我只是簡單地使用HTML敏捷包或類似的東西) 。這個簽名過程是否可以通過asp.net進行?使用asp.net登錄到其他網站

回答

4

是的。

不要以爲去頁面和填充東西。你將需要創建一個web request,其中包含正確的HTTP標頭和數據,這將看他們的服務器是一個人這些內容充斥着所有內容。您需要查看您正在嘗試執行此操作的網站,但我會假設他們在單擊登錄時發送了一組POST數據。示例,從MSDN和修改,以更接近你所需要的(前幾行):

WebRequest request = WebRequest.Create ("http:/www.site.com/loginPostback"); 
request.Method = "POST"; 
// Create POST data and convert it to a byte array. 
string postData = "username=blah;password=blah"; 
byte[] byteArray = Encoding.UTF8.GetBytes (postData); 
// Set the ContentType property of the WebRequest. 
request.ContentType = "application/x-www-form-urlencoded"; 
// Set the ContentLength property of the WebRequest. 
request.ContentLength = byteArray.Length; 
// Get the request stream. 
Stream dataStream = request.GetRequestStream(); 
// Write the data to the request stream. 
dataStream.Write (byteArray, 0, byteArray.Length); 
// Close the Stream object. 
dataStream.Close(); 
// Get the response. 
WebResponse response = request.GetResponse(); 
// Display the status. 
Console.WriteLine (((HttpWebResponse)response).StatusDescription); 
// Get the stream containing content returned by the server. 
dataStream = response.GetResponseStream(); 
// Open the stream using a StreamReader for easy access. 
StreamReader reader = new StreamReader (dataStream); 
// Read the content. 
string responseFromServer = reader.ReadToEnd(); 
// Display the content. 
Console.WriteLine (responseFromServer); 
// Clean up the streams. 
reader.Close(); 
dataStream.Close(); 
response.Close(); 

然後,您可以查看響應流的HTML登錄您需要的信息後發送回服務器。

這就是說,你可能想聯繫他們,看看他們是否有一個API。如果他們改變他們的登錄表單的工作方式,你會打破。或者,如果該網站支持類似OAuth的內容,請轉到該路線。

0

這很大程度上取決於如何在目標網站上實施身份驗證。但是當它到達它時,它全是HTML和HTTP [標題],所以它絕對是可行的。

雖然處理所有可能的身份驗證方案將是一場噩夢,所以祝你好運。 =)

0

爲什麼不考慮通過一個流行的網站,如OpenID,Facebook或一些公開可用的授權存儲的一些其他身份驗證機制?

布賴恩

1

這聽起來像OpenID工作。

+0

好奇OpenID在這裏會有幫助嗎?我認爲OAuth將成爲他正在尋找的東西? OpenID是面向用戶的 - 允許共同的身份。 OAuth是通過編程語言進行跨應用程序授權的。 – Parrots 2011-03-15 17:17:21

+0

對於OpenID或OAuth,其他網站(本例中爲遊戲網站)是否必須安裝軟件?我有幾個需要訪問的網站,它們沒有像安裝的那樣的開放標準。 – Rob 2011-03-15 17:25:57

+0

是的,如果您要使用該網站,則該網站需要支持OAuth,爲什麼您必須使用網絡請求「僞造」這些內容。 – Parrots 2011-03-15 19:00:55

3

登錄過程因地點而異。使用Fiddler2並首先正常登錄到站點以查看您需要的信息。然後在您的代碼中使用WebClient來設置正確的參數並登錄。然後介意cookies! WebClient將返回cookie。如果您抓取多頁,請確保您再次設置Cookie,以便您仍然登錄。

在極少數情況下使用HTTP身份驗證。如果是這樣,請在提出請求之前,在WebClient中設置Credentials

1

通常情況下,像這樣的人使用SSO (Single Sign On)

但是,您可以針對要使用.Net登錄的站點執行後期注入。它需要一點工作,你需要知道表單發佈的位置和通過的值。另外,您還必須爲每個站點添加不同的後期注入,以便嘗試登錄(這會非常麻煩)。

如果可能,我推薦SSO。