일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Home Assistant
- 공모주
- Apple
- 애플
- 파이썬
- RS-485
- 빅데이터분석기사
- homebridge
- 현대통신
- SK텔레콤
- 나스닥
- Python
- 미국주식
- MQTT
- Bestin
- 홈네트워크
- Espressif
- 힐스테이트 광교산
- 매터
- 라즈베리파이
- cluster
- matter
- 월패드
- 국내주식
- ConnectedHomeIP
- 해외주식
- esp32
- 주식
- raspberry pi
- 배당
- Today
- Total
YOGYUI
Tistory::notify-Notice_Blog_New 유입링크 해석하기 본문
티스토리 유입 경로를 보면 간혹 다음과 같이 링크로 유입된 경우를 확인하게 된다
위 예시의 URL은 다음과 같다
정작 링크로 접속해보면
존재하지 않는 페이지라고 나온다
처음 봤을때는 "뭐지? 내가 올린 글이 링크가 깨진건가?"하고 의심을 했는데, 유입 경로에 자주 나타나는 것을 보고는 한 번 조사해봐야겠다는 생각이 들었다 (고객센터는 공돌이에겐 어울리지 않는 곳이라구!)
거창하게 조사한다고 말은 했는데, 실체는 허무하리만치 쉽게 밝혀졌다
notify-Notice_Blog_New? 뒤에 붙은 암호같은 문자열들 중 처음 나오는 aHR0cHM6 시퀀스는 웹개발을 조금이라도 해본 사람이라면 꽤나 자주 봤을 문자열이 아닐까라고 (개인적으로) 생각한다 ㅎㅎ
바로 "https"문자열이 base64 알고리즘으로 인코딩된 문자열이다!!
결국 뭔가 url-link가 인코딩되어 있는 것이 아닐까?
확인을 위해 바로 파이썬의 base64 패키지를 활용해서 디코딩해봤다
import base64
url = "https://yogyui.tistory.com/notify-Notice_Blog_New?aHR0cHM6Ly95b2d5dWkudGlzdG9yeS5jb20vZW50cnkvJUVBJUI0JTkxJUVBJUI1JTkwJUVDJTk1JTg0JUVDJTlEJUI0JUVEJThDJThDJUVEJTgxJUFDLSVFQyU5NyU5OCVFQiVBNiVBQyVFQiVCMiVBMCVFQyU5RCVCNCVFRCU4NCVCMC0lRUQlOTklODglRUQlODIlQjctJUVDJTk3JUIwJUVCJThGJTk5LTEtMg==;n4NRnC9NaQ4RKh+vRtSjrCgg81uCPHnovGhC9+SAIC8="
idx = url.find("?")
b64_encoded = url[idx+1:]
b64_decoded = base64.b64decode(b64_encoded)
In [1]: b64_encoded
Out[1]: 'aHR0cHM6Ly95b2d5dWkudGlzdG9yeS5jb20vZW50cnkvJUVBJUI0JTkxJUVBJUI1JTkwJUVDJTk1JTg0JUVDJTlEJUI0JUVEJThDJThDJUVEJTgxJUFDLSVFQyU5NyU5OCVFQiVBNiVBQyVFQiVCMiVBMCVFQyU5RCVCNCVFRCU4NCVCMC0lRUQlOTklODglRUQlODIlQjctJUVDJTk3JUIwJUVCJThGJTk5LTEtMg==;n4NRnC9NaQ4RKh+vRtSjrCgg81uCPHnovGhC9+SAIC8='
In [2]: b64_decoded
Out[2]: b'https://yogyui.tistory.com/entry/%EA%B4%91%EA%B5%90%EC%95%84%EC%9D%B4%ED%8C%8C%ED%81%AC-%EC%97%98%EB%A6%AC%EB%B2%A0%EC%9D%B4%ED%84%B0-%ED%99%88%ED%82%B7-%EC%97%B0%EB%8F%99-1-2'
bytes 객체인 b64_decoded를 슬쩍 보니 percent-encoded된 것을 알 수 있다
이를 다시 일반 문자열로 디코딩하기 위해 urllib 패키지를 사용하도록 한다
from urllib.parse import unquote
b64_decoded_str = b64_decoded.decode(encoding='utf-8')
url_unquoted = unquote(b64_decoded_str)
In [3]: url_unquoted
Out[3]: 'https://yogyui.tistory.com/entry/광교아이파크-엘리베이터-홈킷-연동-1-2'
내 블로그의 다음 글이 (percent encoding) - (base64 encoding)되었다는 것을 알게 되었다 ㅎㅎ
https://yogyui.tistory.com/entry/광교아이파크-엘리베이터-홈킷-연동-1-2
처음 분석할 때는 notify-Notice_Blog_New 뒤에 인자로 붙어서 뭔가 블로그에 새로운 글을 포스팅하면 다른 사이트에서 참고할 수 있게 하는 서비스인줄 알았는데, 1월 20일에 올린 글이 10월 28일에 위와 같이 유입된 것을 보면 그것도 아닌 것 같다...
어떤 원리로 위와 같은 유입 경로가 생성되는지까지는 딱히 조사할 수 있는 수단과 방법, 그리고 무엇보다도 의지가 부족해서 진행하지 않기로 했다 ㅎㅎ
그냥 URL의 정체를 파악한 것으로 만족하기로~
P.S)
코드를 직접 구현하기 귀찮은 사람은 디코딩해주는 웹페이지를 방문하면 된다
'Software > Etc' 카테고리의 다른 글
Linux - USB Device 접근권한 영구변경 (chmod permanently) (0) | 2022.04.04 |
---|---|
Windows Batch Script::배치 파일의 경로 얻기 (0) | 2021.11.12 |
PyCharm - Run with Python Console 동일 콘솔에서 실행하기 (0) | 2021.09.24 |
알고리즘 - 평균 구하기 (0) | 2021.09.10 |
Visual Studio Code (VSCode) unins000.exe 액세스 거부 오류 해결 (0) | 2021.08.19 |