2011-03-15 5 views
3

안녕하세요, 저는 다른 웹 사이트에 로그인하여 특정 정보를 얻을 수있는 웹 사이트를 만들려고합니다. 예 : 게임 통계를 자동으로 가져 오는 웹 기반 게임 포럼. 내 웹 사이트는 게임 URL로 이동하고, 사용자 이름과 암호를 입력하고, 로그인 한 다음, 일단 로그인 한 HTML을 읽어야합니다 (이 부분은 HTML 민첩성 팩 또는 비슷한 것을 사용하기 쉬운 부분 임) . asp.net에서이 로그인 프로세스가 가능합니까?asp.net을 사용하여 다른 웹 사이트에 로그인

답변

4

예.

페이지에 들어가서 물건을 채우는 것만큼 생각하지 마십시오. 적절한 HTTP 헤더와 데이터가 포함 된 web request을 만들어야합니다. 그러면 서버가 누군가가됩니다. 당신은 구체적으로 이것을하려고하는 사이트를 볼 필요가 있지만 로그인을 클릭하면 POST 데이터 세트를 보내고 있다고 가정 할 것입니다.

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에 대한 응답 스트림을 확인할 수 있습니다 당신이 필요로하는 정보는 로그인 후 다시 전송 서버 : MSDN 및 수정은 (처음 몇 줄) 필요 가까워 질 수 있습니다.

그렇다면 API에 문의하여 API가 있는지 확인하는 것이 좋습니다. 그들이 로그인 양식의 작동 방식을 변경하면 귀하는 깨질 것입니다. 또는 해당 사이트에서 OAuth와 같은 기능을 지원하는 경우 해당 경로로 이동하십시오.

0

인증은 대상 웹 사이트에서 어떻게 구현되는지에 따라 다릅니다. 그러나 바로 아래로 올 때, 그것은 모두 HTML과 HTTP [머리글]이므로, 확실히 할 수 있습니다.

모든 가능한 인증 스키마를 처리하는 것은 악몽이 될 것입니다. 그럼 행운을 빈다. =)

0

OpenID, Facebook 또는 공개적으로 사용 가능한 권한 부여 저장소와 같은 인기있는 사이트를 통해 다른 인증 메커니즘을 고려해보십시오.

브라이언

1

이것은 OpenID위한 작업 같은 소리.

+0

오픈 ID가 여기에 얼마나 도움이 될지 궁금하십니까? OAuth가 그가 찾고있는 것이라고 생각 하나? OpenID는 사용자를위한 것이며 공통된 신원을 허용합니다. OAuth는 프로그래밍 언어를 통한 교차 애플리케이션 인증을위한 것입니다. – Parrots

+0

OpenID 또는 OAuth의 경우 다른 웹 사이트 (이 경우 게임 웹 사이트)에 소프트웨어를 설치해야합니까? 액세스 할 필요가있는 몇 가지 웹 사이트가 있습니다.이 웹 사이트에는 설치된 것과 같은 공개 표준이 없습니다. – Rob

+0

예, 사이트에서 OAuth를 지원해야하는 이유는 웹 요청을 사용하여 '가짜'해야하는 이유입니다. – Parrots

3

로그인 프로세스는 사이트마다 다릅니다. Fiddler2을 사용하고 정상적으로 사이트에 로그인하여 필요한 정보를 확인하십시오. 그런 다음 코드에서 WebClient을 사용하여 올바른 매개 변수를 설정하고 로그인하십시오. 그런 다음 쿠키를 기억하십시오! WebClient는 쿠키를 반환합니다. 여러 페이지를 가져 오는 경우 쿠키를 다시 설정해야 계속 로그인 할 수 있습니다.

드물기는하지만 HTTP 인증이 사용됩니다. 그렇다면 요청이 이루어지기 전에 WebClient에 Credentials을 설정하면됩니다.

1

일반적으로이 사람들의 경우 SSO (Single Sign On)을 사용합니다.

그러나 .Net을 사용하여 로그인하려는 사이트에 대해 포스트 인젝션을 수행 할 수 있습니다. 약간의 작업이 필요하며 양식이 게시되는 위치와 전달되는 값을 알아야합니다. 또한 로그인을 시도하는 사이트 당 다른 포스트 인젝션을 추가해야합니다 (상당히 지저분해질 것입니다).

가능한 경우 SSO를 권장합니다.

관련 문제