sherlock-project
sherlock은 아이디를 이용해 SNS 계정을 찾아주는 파이썬 프로그램입니다. 400개 이상의 사이트에서 작동합니다.
https://github.com/sherlock-project/sherlock
설치
https://sherlockproject.xyz/installation
공식 홈페이지에 다양한 설치 방법이 제시되어 있지만 저는 pip를 이용해 설치해보겠습니다.
pip install --user sherlock-project정말 간단하게 설치할 수 있습니다.
실행
실행 방법도 정말 간단합니다.
sherlock hanjm2008hanjm2008 부분에는 자신이 검색할 아이디를 넣으면 됩니다.

이렇게 발견된 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를 사용하시는 분이 계셨습니다.

답글 남기기