jsoup라이브러리 관련 질문 드립니다.

lalupo20의 이미지

http://www.laromacorea.com/bbs/zboard.php?id=calcio

이 홈페이지 모바일앱을 만들었던거 다시 살리려고 버그 수정중인데요

이게 이상한게

정회원인데

정회원만 들어갈 수 있는 게시판 글 리스트 출력이 안됩니다.

다른 게시판들은 출력이 되구요.

html코드 보니까 게시판끼리 동일한 레이아웃 사용하는거 같은데

왜 그런지 조언 좀 받을 수 있을까요?

lalupo20의 이미지

참고하시라고 댓글 남겨요

자유게시판 주소는 http://www.laromacorea.com/bbs/zboard.php?id=free2 입니다.

lalupo20의 이미지

합법적으로 볼수 있는법 있을까요?

isanghan의 이미지

일단 jsoup가 뷰티풀스프 자바버전으로 보이네요

웹크롤링의 기본은 새로운 세션에서 시작한다고 생각하셔야 합니다.
같은 시스템의 어떤 브라우져를 통해서 보고 있는 정보를 이어서 접근하는게 아니라 완전히 새로운 브라우져를 열어서 접근하는 겁니다..
그러니까 사이트에서 못 보게 막은게 아니라.. 이번건 로그인 정보가 없어서 글이 안보이는 걸로 보입니다..
이런 회원 전용페이지를 크롤링 할때는 로그인 하는 처리를 추가로 넣을 필요가 있습니다.

--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--
N년째 초보입니다

lalupo20의 이미지

예전에는 잘됐는데 로그인하는부분을 점검해야될까요?

isanghan의 이미지

일단 정상적으로 로그인이 완료 되었는지 부터 확인 해야될것 같네요

--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--
N년째 초보입니다

lalupo20의 이미지

일단 비밀번호 틀리게 입력하면 아이디 비밀번호를 확인해주세요. 라는 메시지 정상적으로 출력되구요.

제대로 입력하면 제가 만든 홈화면으로 정상적으로 넘어갑니다.

UserInfo.userId = idForm.getText().toString();
                UserInfo.pass = passwordForm.getText().toString();
                loginForm = Jsoup.connect("http://www.laromacorea.com/bbs/login_check.php")
                        .data("user_id", UserInfo.userId)
                        .data("password", UserInfo.pass)
                        .method(Connection.Method.POST)
                        .execute();
 
 
// 세션 유지를 위한 세션 아이디
                sessionId = loginForm.cookie("PHPSESSID");
                UserInfo.cookie = sessionId;
                DataContainer.cookies = UserInfo.cookie;
                loginResult = loginForm.parse().text();

로그인 하는 부분 이런 식으로 구현 했는데 봐주실 수 있을까요?

밑에 loginResult에 실패라는 단어가 들어가 있으면 로그인 실패로 처리됩니다.

isanghan의 이미지

일단 html 랜더링 결과를 스크린 샷으로 확인 가능하면
그걸 보면 로그인 상태랑 리스트 취득이랑 확인이 될거 같은데요..

--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--
N년째 초보입니다

lalupo20의 이미지

element를 찾을수 없다는 부분은 추가로 출력된 메시지가 없다는 의미로 보이구요.

세션아이디는 정상적으로 받아온거 같습니다.

어떤 스샷이 필요한지 좀 상세하게 말씀해주세요 ㅠ

댓글 첨부 파일: 
첨부파일 크기
Image icon 라로마.png225.23 KB
lalupo20의 이미지

loginForm 변수 안의 내용을 봤는데요.

밑줄 친 부분 보면 status가 ok인데

로그인 승인 됬다는 의미 아닌가요?

댓글 첨부 파일: 
첨부파일 크기
Image icon 라로마2.png210.28 KB
isanghan의 이미지

스크린 샷은 브라우져에서 보는 것과 같은 화면을 캡쳐 가능하냐 였는데..
기능이 있는지 검색해보니 스택 오버플로우에서 브라우져 개념이 아니니 없다고 하네요
https://stackoverflow.com/questions/31270642/how-to-take-webpage-screenshot-in-java

뭐 아무튼 아래 질문인 soup는 html코드 긁는 거니까 클릭 처리 같은 것도 안됩니다.. 링크에 설명하고 있는 selenium 쓰면 스크린샷이든 클릭이든 가능한데 훨씬 무거워서 추천은 못합니다..

그리고 http에서 200 OK는 서버에서 html을 정상적으로 받았다는 뜻이라 로그인 성공과는 또 다릅니다

게시판 리스트를 soap처리로 페이지 보다 늦게 받아서 크롤링 못 받았을 가능성도 있긴 한데 손 놓은지 한참 된 제로보드에서 그런게 있을거 같지도 않고요

결론은 페이지 html다 받은 다음에 뜯어보는게 맞을거 같네요

--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--
N년째 초보입니다

lalupo20의 이미지

좀 더 연구해보겠씁니다!!

lalupo20의 이미지

인터넷을 참고해서 코드를 수정해봤는데요

                UserInfo.userId = idForm.getText().toString();
                UserInfo.pass = passwordForm.getText().toString();
                loginForm = Jsoup.connect("http://www.laromacorea.com/bbs/login_check.php")
                        .data("user_id", UserInfo.userId)
                        .data("password", UserInfo.pass)
                        .method(Connection.Method.POST)
                        .execute();
 
 
// 세션 유지를 위한 세션 아이디
                sessionId = loginForm.cookie("PHPSESSID");
                UserInfo.cookie = sessionId;
                DataContainer.cookies = UserInfo.cookie;
//                loginResult = loginForm.parse().text();
                docTest = loginForm.parse();
                loginResult = docTest.text();

loginResult 받는 부분을 수정했는데요. 일단 Document를 받아온 다음에

텍스트를 추출했습니다.

그리고 받아온 Document 코드를 보니까

<html>
 <head>
  <script>history.go(-2);</script>
 </head>
 <body></body>
</html>

html코드가 이렇게 나오는데 history.go() 이 메소드 검색해보니

인덱스에 저장된 주소로 옮기라는 메소드라는데

이 부분이 불안한데 운영자분이 홈페이지를 이용한 접근 말고 다른 방식은 막아놓은건가요?

lalupo20의 이미지

비밀번호를 틀려보니까 정상적으로 html코드를? 받아오는거 같네요...

isanghan의 이미지

로그인 성공하면 세션에 저장 되니까 돌아가는건 문제가 아닙니다...
페이지를 뒤로 돌리는 건 로그인 정보 입력했던 페이지로 돌아갈려고 한거 같네요..

--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--
N년째 초보입니다

lalupo20의 이미지

세션아이디 받아오는 부분을 보니까

로그인 실패하면 안나오는줄 알았는데

실패해도 받아오네요.

세션아이디 부분에 문제가 있는거 같는데 로그인할때 실패 메시지는 받아오는거 봐서

로그인 시도하는 부분에는 문제가 없는거 같은데... 로그인이 안되는거 같아요.

제 실력으로는 뭐가 문제인지 모르겠네요...

공지 게시판은 다 볼 수 있어서 게시글 리스트 출력도 되고 게시글 접근도 되고 댓글들 이미지 다 잘 받아오는거 같은데...

lalupo20의 이미지

새로 만들고 운영자분한테 등업요청해서 등업 받았거든요? 그 부분에서 문제가 있을수 있을까요? 등업한 결과가 반영이 안되어 있다던가

lalupo20의 이미지

구글 플레이스토어 html 구조 체크를 해서요.

현재 어플과 버전값이 달라졌으면 제 어플 플레이스토어 다운로드 경로로 이동해주는데요.

이게 버전값이 전에는 밖에 노출되어 있었는데

지금은 버튼을 눌러야 나오게 변경 되었습니다.

그래서 이부분이 숨겨져 있어서 파싱이 안되는데 이거 버튼을 눌렀을때 상황을 프로그래밍적으로 구현할 수 있나요?

그리고 구글플레이스토어 html 태그명?이랑 구조가 자주 변경되는데 이거 수정하지 않고 대처할 수 있는 방법이 있나요?

여러가지 여쭤봐서 죄송합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.