2010-02-04 3 views
1

그래서 저는 웹 기반의 온라인 게임을하고 C#을 사용하여 특정 작업을 자동화하고 싶습니다. 문제는 내가 실제로 소스를 받기 위해 로그인해야하기 때문에 WebClient.DownloadData()를 단순히 사용할 수 없다는 것입니다. 다른 대안은 내장 웹 브라우저 컨트롤을 사용하는 것이지만 소스 코드에 대한 액세스 권한을 부여하지는 않습니다. 어떤 제안?로그인이 필요한 페이지에서 웹 페이지 소스 코드를 가져 오는 가장 쉬운 방법 - C#

+0

나는이 같은 질문을 얼마 전에 보았습니다 (http://stackoverflow.com/questions/1927676/scraping-a-facebook-app-for-data). 요약 : 프레임 워크를 사용하십시오. http://watin.sourceforge.net/ 나를위한 승리 솔루션으로 밝혀졌습니다. –

답변

0

당신은 DownloadData를 호출하기 전에 Credentials 속성을 사용하여 웹 클라이언트에 로그인 자격 증명을 설정할 수 있습니다

WebClient client = new WebClient(); 
client.Credentials = new NetworkCredential("username", "password"); 

편집 : mjmarsh가 지적 하듯이이 단지 시도 - 응답 방법을 사용하는 사이트에 대해 작동합니다 단일 요청의 일부로 인증 (나는 직장에서 이것을 처리하는 데 익숙하다. 나는 다른 유형을 고려하지 않았다!). 사이트에서 폼 인증 (또는 실제로 다른 인증 형식)을 사용하는 경우 인증이 단일 요청의 일부가 아니므로이 방법은 작동하지 않습니다. 처리해야 할 다중 요청이 필요합니다.

1

모든 경우 NetworkCredentials가 작동하지 않는다고 생각합니다. 이것은 "기본"또는 "협상"인증에서만 작동합니다.

일부로드 테스트를 위해 내부 웹 사이트에서이 작업을 수행했지만 게임을 "게임"하는 것처럼 들립니다. 그런 이유로 나는 세부 사항으로 가지 않을 것이다 그러나 당신이 로그인 단추를 명중 할 때 위치에 로그인은 아마 HTTP POST의 모양으로 행해지고있다.

POST 요청을 트랩하여 코드에 복제하고 구현이 세션 상태를 유지하는지 확인해야합니다. 게임 사이트가 잘 작성된 경우 현재 세션 게임과 관련된 작업을하기 전에 로그인했습니다.

0

네트워크 자격 증명은 mjmarsh가 이미 지적한대로 작동하지 않습니다.

웹을 스크랩하는 동안 로그인이 필요한 많은 페이지가 나타납니다. 내가 사용하는 접근법 중 하나는 수동으로 사이트에 로그인하는 동안 바이올린을 설치하고 POST 및 GET 패킷을 모니터링하는 것입니다. 이렇게하면 브라우저가 로그인을 에뮬레이트하는 방법을 찾을 수 있습니다. 그런 다음 코드로 동일한 프로세스를 다시 작성해야합니다.

예를 들어, 대부분의 웹 서버는 세션이 인증되었다고 가정하기 위해 쿠키를 사용합니다. 따라서 자격 증명을 사용하여 웹 사이트에 UserName과 Password를 게시하고 쿠키를 기록 할 수 있습니다. 이 쿠키는 웹 사이트의 모든 세부 정보에 액세스하는 데 사용될 수 있습니다.

고급 웹 폐기에 대한 자세한 내용을 확인하려면 다음 링크를 확인하십시오 :

http://krishnan.co.in/blog/post/Web-Scraping-Yahoo-Mail.aspx

을이 블로그에, 당신은 야후 계정으로 인증하고 인증 후 페이지를 읽는 방법을 찾을 수 있습니다.

관련 문제