Java를 통해 웹 사이트에 로그인하는 방법은 무엇입니까?
-
05-07-2019 - |
문제
Java를 통해 웹 사이트에 로그인하는 몇 가지 방법을 시도했습니다. 나는 Watij, htmlunit 등을 사용했지만이 중 어느 것도 익숙하지 않기 때문에 성공적으로 로그인 할 수 없습니다.
누구든지 Java를 통해 로그인하는 방법을 자세히 말해 줄 수 있습니까?
보다 구체적으로, orkut에 로그인하고 로그인 후 오는 페이지의 페이지 소스를 원합니다.
해결책
실제 웹에서 그러한 일을하고 살아남을 수있는 최선의 기회는 Selenium-RC와 함께 있습니다.
기본적으로, 당신이 할 일은 브라우저를 원격 제어하여 수동으로 수행 할 수있는 모든 것을 수행하는 것입니다 (파일 업로드 제외).
여러 번이 패턴을 사용했습니다.
- 셀레늄으로 로그인하십시오
- 쿠키를 가져 가십시오
- 내가 좋아하는 HTTP 라이브러리를 계속하십시오.
다른 팁
답은 웹 사이트가 귀하를 인증하려는 방법에 달려 있습니다.
- HTTP 헤더 (기본 인증)에서 사용자 이름과 비밀번호를 설정해야합니까?
- 아니면 사용자 이름과 비밀번호가 포함 된 양식을 작성하고 제출해야합니까?
어느 쪽이든, 나는 Commons-httpclient를 추천하지만, 후자의 스크린 스크래핑 접근법은 항상 프로그래밍 방식으로 지저분합니다.
기본 인증을 위해 Httpclient의 것을 살펴보십시오. 인증 안내서.
양식 인증을 위해서는 이해하려면 페이지의 HTML 소스를 확인해야합니다.
- 양식이 제출됩니다
- 제출할 매개 변수의 이름은 무엇입니까?
httpclient에서 양식을 제출하는 방법에 대한 도움을 받으려면 살펴보십시오. 게시물 방법에 대한 문서.
httpclient 사이트는 또한 a를 포함합니다 기본 튜토리얼.
Java를 통해 로그인하려는 이유는 무엇입니까? 왜 Curl을 사용하지 않습니까? 당신이 달성하려는 구체적인 것이 있습니까?
Orkut은 Google Auth를 사용하여 로그인합니다. 내 제안은 Fiddler와 같은 HTTP 디버거를 사용하여 로그인하는 동안 트래픽을 시청하는 것입니다. 아마도 복제 해야하는 쿠키와 리디렉션이있을 것입니다.
일반적으로,
- 로그인 양식을보고 이름과 비밀번호 필드의 이름과 양식이 게시하는 동작을 가져옵니다.
- 작업 URL에 대한 게시물 요청을 작성하고 이름과 비밀번호를 올바르게 전달합니다 (예 : 이름 = username & password = pwd)
- 이 https (올바르게 수행하십시오)
- 응답에 헤더에 Set-Cookie가있는 경우 모든 후속 요청에 해당 쿠키를 보내십시오.
- 응답에 리디렉션이있는 경우 리디렉션을 얻으십시오.
- (리디렉션이 없을 때까지 #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 코드처럼 보입니다.