문제

나는 자동화하는 데 필요한 프로세스를 포함하는 웹 사이트를 사용하여 로그인 형태입니다.I 을 캡처 할 필요가 일부 데이터 페이지에서 다음 로그인 페이지입니다.

나는 방법을 알려면 정상적인 페이지를 긁어지만,그 뒤의 안전한 사이트입니다.

  1. 과 함께 할 수있다.NET 웹브 클래스는?
    • 어떻게 자동으로 로그인을 하나요?
    • 어떻게 로그인 유지에서 다른 페이지?
도움이 되었습니까?

해결책

방법 중 하나는 것을 통해 자동화하는 브라우저--당신이 언급자간의 상호작용 등 나 추측할 수 있습을 참조하는 웹브습니다.NET.

두 개의 주요 포인트:

  • 아무것도 없어에 대한 특별한 https 관련된 웹브-그것은 단지 작동
  • 쿠키는 일반적으로 수행하는 데 사용 인증하기 위한 프로 캡쳐 및 재생할

여기 단계는 나를 따라:

  1. 로그인 양식을 캡처하는 쿠키에 응답합니다.
  2. 사용 Xpath 및 HtmlAgilityPack 찾"input type="숨겨진 필드의 이름과 값입니다.
  3. 게시 로그인 형태의 액션과 함께 사용자 이름,암호,그리고 숨겨진 분야에서 값 request body.포함하는 쿠키에서 요청 헤더가 있습니다.시를 캡처합 쿠키에 응답합니다.
  4. 을 얻을 당신이 원하는 페이지,다시 가진 쿠키에서 요청 헤더가 있습니다.

2 단계에서,나는 언급한 방법에 대한 자동화 로그인합니다.일반적으로 게시할 수 있습으로 직접 사용자 이름과 암호를 알려진 로그인 양식을 작업 없이 얻는 초기 형태 또는 릴레이를 이 숨겨진된 필드가 있습니다.일부 사이트는 형태로 유효성 검사(서로 다른 분야에서 유효성)에서 자신의 형식을 만드는 이 방법은 작동하지 않습니다.

HtmlAgilityPack 입니다.네트워크 라이브러리는 당신이 당신 병을 형성에 html XmlDocument 할 수 있도록 XPath 니다.매우 유용합니다.

마지막으로 실행할 수 있습는 상황으로 형태로 의존하는 클라이언트에서 스크립트를 변경하는 형태로 값을 제출하기 전에.필요할 수 있는 시뮬레이션이 동작입니다.

도구를 사용하여 보 http 트래픽을 위해 이런 종류의 작업은 매우 도움이-나가 추천 ieHttpHeaders, Fiddler, 나 방화 (net tab).

다른 팁

당신은 쉽게 시뮬레이션 사용자 입력이 있습니다.을 제출할 수 있습 양식 웹 페이지에서 당신은 프로그램에 의해 보내는 게시물\얻을 요청하는 웹 사이트입니다.
전형적인 로그인 양식처럼 보인:

<form name="loginForm" method="post" Action="target_page.html">
   <input type="Text" name="Username">
   <input type="Password" name="Password">
</form>

을 보낼 수 있습니다 post 요청을 제공하는 웹사이트에 대한 값을 사용자 이름과 비밀번호 필드가 있습니다.무슨 일을 보낸 후에는 귀하의 요청에 따라 크게 웹사이트에,당신은 일반적으로 리디렉션됩니다 어떤 페이지입니다.당신이 승인한 정보에 저장됩니다 세션\쿠키입니다.그래서 만약 당신을 긁어내는 클라이언트를 유지할 수 있습 웹 세션\쿠키를 이해하고 당신은에 액세스할 수 있을 것입 보호 페이지입니다.

그것은 명확하지 않에서 당신의 질문에 어떤 언어를\framework 당신이 사용합니다.예를 들어 있는 프레임워크에 대한 화면을 긁어(를 포함하여 로그인 기능)written in perl- WWW::기계화

참고할 수 있는 몇 가지 문제에 직면한 경우 사이트에 당신은 노력하고 로그인을 사용한 자바 스크립트를 또는 어떤 종류의 보안 문자.

할 수 있으십니까?은 웹 클라이언트 클래스의 말에서 하나 HTTPUnit/Java?

그렇다면,당신의 세션해야 자동으로 저장됩니다.

그것은 명확하지 않을에서 당신의 질문하는 웹브 클래스(또는 언어)에 응용 프로그램이 있습니다.

이 있는 경우에는 자바 런타임이 사용할 수 있는 아파치 HttpClient 클래스여기에 예를 들어 내가 쓴 사용하여 그루비스에 액세스하는 맛있는 API 를 통해 SSL:

   def client = new HttpClient()

   def credentials = new UsernamePasswordCredentials( "username", "password" )
   def authScope = new AuthScope("api.del.icio.us", 443, AuthScope.ANY_REALM)
   client.getState().setCredentials( authScope, credentials )

   def url = "https://api.del.icio.us/v1/posts/get"

   def method = new PostMethod( url )
   method.addParameter( "tag", tag )
   client.executeMethod( method )
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top