嘿,夥計們,我正在嘗試製作一個網站,可以爲用戶登錄其他網站,並獲取特定信息。例如:一個基於網絡的遊戲論壇,可以自動提取您的遊戲統計數據。我的網站必須導航到遊戲url,填寫用戶名和密碼,登錄,然後在登錄後閱讀html(這是簡單的部分,我只是簡單地使用HTML敏捷包或類似的東西) 。這個簽名過程是否可以通過asp.net進行?使用asp.net登錄到其他網站
回答
是的。
不要以爲去頁面和填充東西。你將需要創建一個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的內容,請轉到該路線。
這很大程度上取決於如何在目標網站上實施身份驗證。但是當它到達它時,它全是HTML和HTTP [標題],所以它絕對是可行的。
雖然處理所有可能的身份驗證方案將是一場噩夢,所以祝你好運。 =)
爲什麼不考慮通過一個流行的網站,如OpenID,Facebook或一些公開可用的授權存儲的一些其他身份驗證機制?
布賴恩
這聽起來像OpenID工作。
登錄過程因地點而異。使用Fiddler2並首先正常登錄到站點以查看您需要的信息。然後在您的代碼中使用WebClient來設置正確的參數並登錄。然後介意cookies! WebClient將返回cookie。如果您抓取多頁,請確保您再次設置Cookie,以便您仍然登錄。
在極少數情況下使用HTTP身份驗證。如果是這樣,請在提出請求之前,在WebClient中設置Credentials。
通常情況下,像這樣的人使用SSO (Single Sign On)。
但是,您可以針對要使用.Net登錄的站點執行後期注入。它需要一點工作,你需要知道表單發佈的位置和通過的值。另外,您還必須爲每個站點添加不同的後期注入,以便嘗試登錄(這會非常麻煩)。
如果可能,我推薦SSO。
- 1. 使用其他網站登錄到Joomla網站
- 2. PHP使用其他網站登錄?
- 3. 自動登錄到其他網站PHP
- 4. 當登錄到其他網站時自動登錄到moodle
- 5. 登錄其他網站使用JavaScript和jQuery,發送POST登錄
- 6. 從客戶端網站登錄到其他網站
- 7. 以編程方式使用OAuth登錄到其他網站
- 8. SalesForce從其他網站簡單登錄
- 9. Sharepoint 2010通過其他網站登錄
- 10. 從其他網頁使用PHP登錄網站
- 11. 從其他應用程序登錄到asp.net網站,然後接收文件流
- 12. Laravel:使用其他網站上登錄的用戶數據
- 13. 登錄按鈕的點擊其他網站上我的網站
- 14. 登錄網站和其他網站部分
- 15. 從ASP.NET網站登錄Sharepoint
- 16. Facebook.net C#SDK並登錄到Asp.net網站
- 17. ASP.NET:無法登錄到網站與IIS
- 18. 嵌入asp.net登錄到手寫網站
- 19. Asp.Net MVC路由到其他網站
- 20. ASP.NET MVC-2發佈到其他網站?
- 21. 登錄到網站
- 22. 使用先前登錄的網站驗證外部網站asp.net
- 23. 如何每天自動登錄到其他網站?
- 24. 通過Facebook登錄到其他網站 - IPHONE
- 25. 其他網站如何檢測到您在Facebook上登錄?
- 26. 自動登錄到WordPress的儀表板從其他網站
- 27. 自動登錄到其他網站php腳本
- 28. 使用其他域portal.microsoftonline.com登錄到OWA
- 29. 網站使用PHP登錄
- 30. 使用C登錄網站#
好奇OpenID在這裏會有幫助嗎?我認爲OAuth將成爲他正在尋找的東西? OpenID是面向用戶的 - 允許共同的身份。 OAuth是通過編程語言進行跨應用程序授權的。 – Parrots 2011-03-15 17:17:21
對於OpenID或OAuth,其他網站(本例中爲遊戲網站)是否必須安裝軟件?我有幾個需要訪問的網站,它們沒有像安裝的那樣的開放標準。 – Rob 2011-03-15 17:25:57
是的,如果您要使用該網站,則該網站需要支持OAuth,爲什麼您必須使用網絡請求「僞造」這些內容。 – Parrots 2011-03-15 19:00:55