2010-12-02 4 views
1

나는 이것에 상당히 새롭다, 묻는 다른 누군가가 있지 않는다. 일부 웹 스크래핑 소프트웨어에 대해 프로그래밍 방식으로 웹 페이지에 액세스하려고합니다 (C#). HttpWebResponse 및 HttpWebRequest 클래스를 사용하여 웹 페이지 양식을 통해 로그인을 수행하는 과정을 알아 냈지만 2 단계 로그인 절차가있는 웹 사이트가 있습니다.팝업 인증을 처리하는 방법은 무엇입니까?

첫 번째 로그인은 팝업을 통해 발생합니다. 백그라운드에로드 된 웹 페이지가 없으며 인증이 필요하다는 팝업 대화 상자가 표시되고 사용자 이름과 비밀번호를 묻는 메시지가 표시됩니다.

첫 번째 로그인을지나 가면 두 번째 로그인은 내가 이미 배운 것을 처리 할 수 ​​있어야하는 웹 양식입니다.

질문 : 팝업 인증 요청에 대한 로그인 정보를 프로그래밍 방식으로 어떻게 제공합니까?

편집 그냥 좀 더 많은 정보를 제공합니다. Fiddler는 웹 사이트에 액세스하려고 할 때 호스트를 CONNECT로 제공합니다.

편집

나는 아래 MrEye의 답변을 사용하려고 시도하고, 조금 더 저를 얻을 듯하지만 여전히 정지하지 데. 내가 인증서 문제를 뻥, 그래서 일부 Google 작업 후 나는 다음과 같은 코드를 추가하여 이에 대한 해결 방법을 발견 : 나는 값을 가진 System.Net.WebException을 받고 있어요 지금

ServicePointManager.ServerCertificateValidationCallback += 
      delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) 
     { 
      return true; 
     }; 

"를 제거 서버에서 오류를 반환했습니다 : (401) 무단. " 예외는 더 이상 얻을 수 없었지만 Status은 ProtocolError입니다. 제공된 사용자 이름/암호가 유효하다는 것을 알고 있습니다.

+0

401 HTTP 응답은 원격 서버가 당신이 그것을에 제출 한 자격 증명 내가 당신을 알고를 거부했음을 나타냅니다 당신이 옳았다는 확신이 있었고 확실한 것이 확실합니다.). HttpWebRequest에 대한 코드를 게시 할 수 있습니까? – MrEyes

답변

1

NetworkCredential 개체를 사용자가 만든 HttpWebRequest 개체의 Credentials 속성에 맞게 배치하면됩니다. 예를 들어 :

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

당신이 당신에게 연결하는 서버에 따라 수도도 필요

myWebRequest.PreAuthenticate = true; 
+0

마지막으로 작동하도록 만들었습니다. 제공하는 자격 증명과 관련이 없으며 올바른 내용 이었지만 리디렉션을 허용해야했으며 URL이 약간 잘못되었습니다. 엄청 고마워! – Anthony

관련 문제