CI 묻고 답하기

제목 웹 크롤링 / 서로다른 도메인에서 세션유지 통신 문의
카테고리 CI 2, 3
글쓴이 라산 작성시각 2022/01/20 20:04:50
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 7806   RSS

안녕하세요, 웹 크롤링 / 서로다른 도메인에서 세션유지 통신 관련 궁금한게 있어서 글 남깁니다.

A와 B사이트 가 있는데요, 두 사이트는 도메인이 다릅니다.

A사이트에서 로그인 버튼을 클릭시, 특정값을 갖고 B사이트의 로그인 페이지로 이동합니다.

이후 사용자가 B사이트에서 아이디와 비밀번호를 입력하면

B사이트에서 로그인 처리 이후 해당 회원의 고유값을 A사이트 로 전달해줍니다.

그럼 A사이트에서 고유값을 암호화하여 다시 B사이트로 전달하면, B사이트에서 검증 후 해당 회원의 암호화된 개인정보를 보여줍니다.

(페이지 내에 찍혀있음 echo 나  print_r 형식처럼..)

 

근데 이 암호화된 개인정보가, return 되는게 아니고 그냥 페이지 자체에 찍혀있는데,

해당 값을 가져오려면 어떠한 방법들이 있을까 싶어서 여쭤봅니다.

 

현재까지 진행해본 목록입니다.

===========================================================================

1. CURL로 데이터 전송 및 가져오기 ( B사이트에서 세션검증을 하는데 CURL 통신시 세션값이 null 이여서 불가 )

2. ajax 사용 ( 두 도메인이 달라 CORS 이슈로 사용 불가 )

3. ajax->jsonp 사용 ( 리턴되는타입이 jsonp 가 아니라서 돌아오는 값이 없음 )

4. iframe 사용 ( 보안정책으로 인해 iframe 사용 불가 )

5. 스누피를 이용한 크롤링 ( B사이트에서 세션 검증을 하는데 세션값이 null 이여서 불가 )

5-1) 스누피 크롤링 이용 시 

    $login_url = '로그인페이지 url';

    $snoopy->httpmethod = "POST";

    $auth['id'] = '아이디';

    $auth['password'] = '비밀번호';

    $snoopy->submit($login_url, $auth);

    $snoopy->setcookies();

으로 로그인 진행 후 회원정보 받는페이지 접근시에는 세션값이 생성되어서 그런지, 데이터가 나오긴합니다.

다만 A사이트에서 회원의 아이디나 비밀번호를 받는곳이 없어서, 위의 기재한 방법을 사용할 수 없습니다..

===========================================================================

 

 

서로 다른 도메인에서, 필요한 세션값을 유지하면서 페이지에 찍혀있는 값을 가져올 수 있는 방법이 있을까요??

추가적으로.. 회원정보를 가져올때 , B사이트에서 검증하는 세션의 명칭과 값이 무엇인지는 알 수 없습니다..ㅜㅜㅜ

태그 웹크롤링,서로 다른 도메인,세션유지통신
 다음글 ci4 get_text 기능 구현하려면 어떻게 해야하나... (2)
 이전글 Docker기반 환경에서 CI4와 DB 접속이 안되는 ... (2)

댓글

한대승(불의회상) / 2022/01/21 09:28:17 / 추천 1
각 도메인별 로그인후 쿠키를 통하여 전달되는 세션아이디를 크롤링시 쿠키에 설정하여 전송하여야 합니다.
변종원(웅파) / 2022/01/21 09:49:11 / 추천 1

b사이트에서 보내주는 정보가 화면에 출력되는 거라면 a에서 파싱하는 방법밖에 없습니다. b에서 a의 api로 전송하도록 수정해서 처리하는게 좋습니다.

a와 b가 한 회사의 사이트라면 single sign on을 구현하거나 구매해서 적용하시거나

다른 회사의 사이트들이라면 서로 api로 통신하도록 해야 합니다.

라산 / 2022/01/21 12:05:45 / 추천 0

@한대승(불의회상)

감사합니다. 다만 로그인 후 크롤링시 쿠키에 세션아이디를 설정하라고 하셨는데,

필요한 세션명과 값을 알고있어야 설정해서 전송할 수 있는것 아닌가요?? 혹시 다른방법이 있나요??

 

@변종원(웅파)

감사합니다. 다만 a와 b가 서로 다른회사의 사이트이고, 해당 데이터를 a 사이트의 특정 url로 리턴되게 처리해달라고 요청하였으나, 

의견이 수렴되지 않네요...

한대승(불의회상) / 2022/01/21 12:33:25 / 추천 0

@라산 php의 경우 PHPSESSIONID 처럼 쿠키를 서버에서 전송해줍니다. JAVA의 경우 JSESSIONID 처럼 보내 주더군요.

각 서버 설정마다 달라 헤더 정보를 확인해 보셔야합니다.