Sherlock: 아이디로 SNS 계정 찾기

Sherlock: 아이디로 SNS 계정 찾기 image 12

sherlock-project

sherlock은 아이디를 이용해 SNS 계정을 찾아주는 파이썬 프로그램입니다. 400개 이상의 사이트에서 작동합니다.

https://github.com/sherlock-project/sherlock

Sherlock: 아이디로 SNS 계정 찾기 sherlock 1

설치

https://sherlockproject.xyz/installation

공식 홈페이지에 다양한 설치 방법이 제시되어 있지만 저는 pip를 이용해 설치해보겠습니다.

pip install --user sherlock-project

정말 간단하게 설치할 수 있습니다.

실행

실행 방법도 정말 간단합니다.

sherlock hanjm2008

hanjm2008 부분에는 자신이 검색할 아이디를 넣으면 됩니다.

Sherlock: 아이디로 SNS 계정 찾기 image 11 2

이렇게 발견된 SNS의 링크들이 나타납니다.

Coders Rank와 LessWrong은 제가 실제로 가입한 사이트는 아닌데요. 사이트의 구조가 변하는 것을 못 따라가서 이렇게 오류가 나는 경우도 있습니다.

그 외에 사용법은 공식 사이트sherlock -h를 참고해주세요.

글쓴이의 기여 내역

feat: Add some popular website in Korea #2558

기존에 한국 사이트 중에서는 네이버만 지원 하였는데 디시인사이드, 나무위키, 숲(구. 아프리카TV), 티스토리 지원을 추가하였습니다.

"Some Cool Site That Everyone Loves": {
    "errorType": "status_code",
    "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
    "url": "https://somecoolsitethateveryoneloves.com/members/{}",
    "urlMain": "https://somecoolsitethateveryoneloves.com",
    "username_claimed": "blue",
    "username_unclaimed": "noonewouldeverusethis7"
  },

공식 Contributing 가이드에서는 위와 같은 형식으로 사이트를 추가할 것을 추천하고 있습니다.

regexCheck는 솔직히 귀찮아서 안했고 username_unclaimed는 그때그때 바뀔 수 있는 것 같아서 안했습니다.

username_claimed 항목으로 ‘blue’를 추천하여서 blue를 그대로 사용하려고 했는데 blue라는 계정이 있는 사이트는 4곳 중 티스토리 한곳 뿐이었습니다.

제가 추가한 사이트들의 코드를 하나씩 살펴보겠습니다.

  "dcinside": {
    "errorType": "status_code",
    "url": "https://gallog.dcinside.com/{}",
    "urlMain": "https://www.dcinside.com/",
    "username_claimed": "anrbrb"
  },

먼저 디시인사이드 코드입니다. 디시인사이드에서는 갤로그라는 서비스를 2007년부터 제공중입니다. 갤로그 주소는 식별코드와 연동되어 고닉이 식별코드가 사용중인지 알 수 있습니다.

처음에는 username_claimed로 김유식(디시인사이드 개설자)의 갤로그를 사용하려고 했는데 안타깝게도 갤로그가 없어서 갤로그 하면 생각나는 분을 사용하였습니다. 무규.

글을 쓰면서 알게 되었는데 디시인사이드에서 식별코드를 정할 수 없게 된지도 벌써 2년 가까이 되가네요. 언젠가 sherlock에서 디시인사이드를 검색하는 기능은 전혀 쓸모가 없어질지도 모르겠습니다.

  "namuwiki": {
    "__comment__": "This is a Korean site and it's expected to return false negatives in certain other regions.",
    "errorType": "status_code",
    "url": "https://namu.wiki/w/%EC%82%AC%EC%9A%A9%EC%9E%90:{}",
    "urlMain": "https://namu.wiki/",
    "username_claimed": "namu"
  },

다음은 나무위키입니다. 나무위키가 한국 국적의 사이트는 아니지만 시밀러웹에 따르면 한국 사이트 방문 순위 5위라고 합니다.

나무위키에 회원가입을 하게 되면 자동으로 사용자 문서가 생성됩니다. 이 점을 이용해서 사용자 문서가 있는지 확인하는 방식으로 작성하였습니다.

username_claimed로는 나무위키의 개설자인 namu의 사용자 문서를 사용하였습니다.

처음에 PR을 만들었을 때 F- Check에서 실패하였습니다. 제 컴퓨터에서는 잘 작동하는 것 같았는데 실패했다고 뜨니 당황스러웠습니다. 레포지토리 관리자가 지역 때문에 일어난 문제 같으니 코멘트를 추가하고 넘어가자고 하여서 수용하였습니다.

  "SOOP": {
    "errorType": "status_code",
    "url": "https://www.sooplive.co.kr/station/{}",
    "urlMain": "https://www.sooplive.co.kr/",
    "urlProbe": "https://api-channel.sooplive.co.kr/v1.1/channel/{}/station",
    "username_claimed": "udkn"
  },

다음은 SOOP(구. 아프리카 TV)입니다.

처음에는 url에 방송국 주소를 넣어 해결하려고 했으나 방송국이 존재하지 않을 때에도 200을 반환하는 문제점이 있었습니다. 내부 API를 이용해 방송국이 존재하는지 확인하는 방식으로 해결하였습니다.

username_claimed로는 모 유명 스트리머를 사용하였습니다. 숲 메인 페이지에서 공식 방송국을 조금 찾아보려고 했는데 잘 찾을수 없어서 머릿속에 바로 떠오른 분을 채용하였습니다. 그런데 이 분 요즘 위기감을 뭉탱이로 느끼셔서 그런지 경쟁사로 가버리셨더군요.

  "tistory": {
    "errorType": "status_code",
    "url": "https://{}.tistory.com/",
    "urlMain": "https://www.tistory.com/",
    "username_claimed": "notice"
  },

마지막으로 티스토리입니다.

티스토리는 특이하게 아이디를 서브도메인으로 사용합니다. 서브도메인에 아이디가 들어가는 형식도 sherlock에서 지원할지 의심스러웠는데 테스트를 해보니 잘 작동하였습니다.

username_claimed로는 티스토리 메인 홈페이지에서 찾은 공식 티스토리 블로그를 사용하였습니다. 글을 쓰면서 알게 되었는데 사실 티스토리에는 아이디로 blue를 사용하시는 분이 계셨습니다.

Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다