C# https 크롤링

안녕하세요

초보 취미 코더인데 https 크롤링 기능이 급히 필요합니다.

제가 비전공인데이라서 trial and error 방식으로 무작정 코딩하다보면 해결하는 방식으로 진행했는데, https에서는 많이 막히네요

최대한 문제점에 대해 설명했습니다. 고수님들의 조언 부탁 드립니다.

o목표: https 크롤링 (폐쇄망내 IP전화기 정보 읽기)

o방법 검토

  1. C# 셀레니움으로 읽기
  • 문제점: 처음부터 로그인 화면이 아니라, 접속후 쿠키가 없으면 로그인 팝업으로 전환 시킴. 이로 인해 로그인 창의 html 코드(tag, id 등)를 알수 없으며(아래 내용 참조), IP전화기다 보니 속도가 느림
  1. webrequest 방식
  • 문제점: 코딩 실력이 부족하여, 최초 화면에서 로그인창 전환시 로그인 하는 방법을 모르겠음. 로그인 이후 웹사이트에서 읽기는 어떻게든 해결할 수 있을 것 같음.

방법을 찾아보니, credentialcache로 접속해서 쿠키를 확보하는 것으로 이해 했음. 그러나, 로그인 창의 URL을 모르겠음. 로그인 창이 처음부터 뜨는 게 아니라, 리다이렉트 후 팝업 방식임(첨부 파일 참조)

첨부 파일 제한으로 사진 업로드가 안됨

  • 메시지박스처럼 로그인 창이 뜸. 소스보기 불가로 html 코드 볼 수 없음
좋아요 1

크롤링을 잘하기 위해서는 웹 브라우저가 해당 페이지를 어떻게 처리하는지를 거의 그대로 모방하는게 좋습니다.

피들러 같은 프로그램으로 코드에서 진행해야 하는 단계를 살펴보면, 두 가지 요소가 있습니다.

  • 첫 번째 헤더
    헤더 정보를 이용해 서버는 올바른 접근인가 아닌가 구분합니다. 크롤링을 할 때 가장 중요한 요소겠죠.
    되도록 코드에서 헤더 정보를 그대로 맞춰 주는게 좋습니다.

  • 두 번째 요청 주소
    요청 주소는 다양한 이유로 인해 한번이 아니라 여러 번 리다이렉트 되어 요청될 수 있습니다. 보통, 그 기능을 웹브라우저의 자바스크립트에서 처리하게 되는데, 당연히 코드로 처리하게 되면 한번의 요청으로 처리가 안되겠죠. 피들러를 통해서 리다이렉트 되는 형태를 그대로 모방해서 요청해줘야 합니다.

사실, HTTPS 크롤링이 HTTP랑 별개 다를게 없어요. 문제는 HTTPS는 아닌 것 같네요.

로그인하는 행위는 피들러를 통해 요청 파라미터 및 헤더 정보를 모방하면 됩니다.

좋아요 1

진심으로 감사드립니다. 피들러를 통해 다시 세심하게 보겠습니다

좋아요 1