개인적으로 만들어서 사용하는 웹페이지 북마크 앱이 있다.
이전에 OpenGraph 예제로 만들었던 앱인데 인스타그램의 URL을 저장했더니 og태그를 못찾아서 제대로 저장이 되질 않는다.
원인은 매우 간단하였는데 아래에서 같이 살펴보자
우선 Jsoup에서 페이지의 태그 객체인 'Document' 객체를 가져올 때
Jsoup의 Connection 객체를 통해서 요청을 보내는데
이때 Connection 객체를 설정이 누락되어 있었다.
// 기존
document = Jsoup.connect(url).get()
// 수정
document = Jsoup.connect(url)
.userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64)")
.followRedirects(true)
.get()
정확한 원인은 요청을 보낼 때 userAgent를 따로 설정해주지 않으면
기본값인 "Java/1.x ....."으로 설정되어 요청을 보내게 되는데
이러한 형태의 userAgent를 차단하는 서버들이 있다고 한다.
필자의 경우 userAgent를 임시로 크롬과 같이 설정했더니 해결되었다.
followRedirects()
는 페이지의 최종 결과물이 요청 보낼때의 URL이 아니라
리디렉션을 통하여 URL이 변경된 후에 나타난다면 이 경우에도 og태그는 존재하지 않을 가능성이 있어 추가적으로 넣어주었다.
개인적으로 공부했던 것을 바탕으로 작성하다보니
잘못된 정보가 있을수도 있습니다.
인지하게 되면 추후 수정하겠습니다.
피드백은 언제나 환영합니다.
읽어주셔서 감사합니다.