문제

Java를 통해 웹 사이트에 로그인하는 몇 가지 방법을 시도했습니다. 나는 Watij, htmlunit 등을 사용했지만이 중 어느 것도 익숙하지 않기 때문에 성공적으로 로그인 할 수 없습니다.

누구든지 Java를 통해 로그인하는 방법을 자세히 말해 줄 수 있습니까?

보다 구체적으로, orkut에 로그인하고 로그인 후 오는 페이지의 페이지 소스를 원합니다.

도움이 되었습니까?

해결책

실제 웹에서 그러한 일을하고 살아남을 수있는 최선의 기회는 Selenium-RC와 함께 있습니다.

기본적으로, 당신이 할 일은 브라우저를 원격 제어하여 수동으로 수행 할 수있는 모든 것을 수행하는 것입니다 (파일 업로드 제외).

여러 번이 패턴을 사용했습니다.

  1. 셀레늄으로 로그인하십시오
  2. 쿠키를 가져 가십시오
  3. 내가 좋아하는 HTTP 라이브러리를 계속하십시오.

다른 팁

답은 웹 사이트가 귀하를 인증하려는 방법에 달려 있습니다.

  • HTTP 헤더 (기본 인증)에서 사용자 이름과 비밀번호를 설정해야합니까?
  • 아니면 사용자 이름과 비밀번호가 포함 된 양식을 작성하고 제출해야합니까?

어느 쪽이든, 나는 Commons-httpclient를 추천하지만, 후자의 스크린 스크래핑 접근법은 항상 프로그래밍 방식으로 지저분합니다.

기본 인증을 위해 Httpclient의 것을 살펴보십시오. 인증 안내서.

양식 인증을 위해서는 이해하려면 페이지의 HTML 소스를 확인해야합니다.

  • 양식이 제출됩니다
  • 제출할 매개 변수의 이름은 무엇입니까?

httpclient에서 양식을 제출하는 방법에 대한 도움을 받으려면 살펴보십시오. 게시물 방법에 대한 문서.

httpclient 사이트는 또한 a를 포함합니다 기본 튜토리얼.

Java를 통해 로그인하려는 이유는 무엇입니까? 왜 Curl을 사용하지 않습니까? 당신이 달성하려는 구체적인 것이 있습니까?

Orkut은 Google Auth를 사용하여 로그인합니다. 내 제안은 Fiddler와 같은 HTTP 디버거를 사용하여 로그인하는 동안 트래픽을 시청하는 것입니다. 아마도 복제 해야하는 쿠키와 리디렉션이있을 것입니다.

일반적으로,

  1. 로그인 양식을보고 이름과 비밀번호 필드의 이름과 양식이 게시하는 동작을 가져옵니다.
  2. 작업 URL에 대한 게시물 요청을 작성하고 이름과 비밀번호를 올바르게 전달합니다 (예 : 이름 = username & password = pwd)
  3. 이 https (올바르게 수행하십시오)
  4. 응답에 헤더에 Set-Cookie가있는 경우 모든 후속 요청에 해당 쿠키를 보내십시오.
  5. 응답에 리디렉션이있는 경우 리디렉션을 얻으십시오.
  6. (리디렉션이 없을 때까지 #5에 반복을 유지하십시오)

이것의 끝에서 얻는 응답은 페이지 소스입니다.

이것을 살펴보십시오 :

http://code.google.com/apis/gdata/javadoc/com/google/gdata/client/http/authsubutil.html http://code.google.com/p/apex-google-data/source/browse/trunk/google_data_toolkit/src/classes/authsubutil.cls

서비스를 인증하기위한 Google 코드처럼 보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top