티스토리 자동화 봇을 운영할 때 가장 큰 벽은 바로 로그인 유지입니다. 매번 수동으로 쿠키를 복사해서 서버에 올리는 번거로운 작업 때문입니다. 이제 보안은 확실히 지키면서 편의성을 높이는 두 가지 티스토리 자동 로그인 방법을 소개해 드립니다. 티스토리 자동화 봇을 운영하다 보면 가장 귀찮은 게 바로 로그인 세션 만료와 쿠키 갱신인데요. 이제 매번 서버에 접속해서 복잡한 권한 설정을 할 필요 없이, 브라우저에서 버튼 하나로 서버에 쿠키를 던져주는 시스템을 함께 적용해 보겠습니다.
왜 이 방식을 사용해야 할까요? 보통 많이 쓰시는 SCP 파일 전송 방식은 윈도우 환경에서 SSH 키 권한 문제나 한글 경로 인식 오류 등 해결하기 까다로운 기술적 장벽이 많습니다. 그래서 저는 브라우저 확장 프로그램이 로그인 쿠키 데이터를 직접 배달하는 방식을 선택했습니다. 이 방식이 훨씬 빠르고 에러도 거의 없어서 서버 동기화에 최적입니다.
방법 1. [완전 자동] 나만의 크롬 확장 프로그램 제작
직접 만든 미니 앱을 브라우저에 설치해서, 버튼 클릭 한 번으로 서버에 쿠키를 쏘는 자동 쿠키 전송 방식입니다. 우분투 서버에는 기본적으로 파이썬이 설치되어 있지만, 패키지 관리 도구인 pip를 최신 상태로 유지해야 설치 에러를 방지할 수 있습니다.

1. 서버 환경 구축하기
1-1. 시스템 업데이트 및 파이썬 설치
# 패키지 목록 최신화
sudo apt update && sudo apt upgrade -y
# 파이썬 패키지 관리자 및 가상환경 설정 도구 설치
sudo apt install python3-pip python3-venv -y1-2. Flask 및 CORS 라이브러리 설치
우리의 쿠키 수신 서버가 정상적으로 작동하기 위해 꼭 필요한 핵심 라이브러리들입니다.
# 외부 브라우저로부터의 접속 허용을 위한 Flask-CORS 설치
# 최신 우분투 환경에서는 시스템 패키지 보호를 위해 아래 옵션이 필요할 수 있습니다.
pip3 install flask flask-cors --break-system-packages1-3. 네트워크 및 방화벽 관리 도구 설치
서버 포트 개방이 꼬였을 때 강제로 프로세스를 정리하거나, 방화벽 설정을 재부팅 후에도 유지하기 위해 사용합니다.
# 특정 포트를 사용하는 프로세스 확인 및 종료 도구
sudo apt install psmisc -y
# 방화벽 규칙을 저장하여 재시작 후에도 적용해주는 도구
sudo apt install iptables-persistent -y1-4. Flask 서버 수신 대기 스크립트 작성
서버는 항상 데이터 동기화 요청을 기다리다가 쿠키가 도착하면 즉시 파일로 저장합니다. 보안을 위해 임의 포트를 할당하여 사용하는 것이 좋습니다.
# 파일명: server_receiver.py
from flask import Flask, request, jsonify
from flask_cors import CORS
import pickle
app = Flask(__name__)
CORS(app) # 외부 접속 허용
@app.route('/sync_data', methods=['POST'])
def sync():
try:
received_data = request.json
# 티스토리 봇이 참조할 쿠키 저장 파일 경로
with open('./tistory_session.pkl', 'wb') as f:
pickle.dump(received_data, f)
print("[*] 데이터 동기화가 성공적으로 완료되었습니다.")
return jsonify({"result": "success"}), 200
except Exception as e:
return jsonify({"result": "error", "msg": str(e)}), 500
if __name__ == '__main__':
# 보안 강화를 위해 50000번대 이상의 포트 사용을 권장합니다.
app.run(host='0.0.0.0', port=12345)2. 크롬 확장 프로그램 제작하기
2-1. 동작 로직 구성 (popup.js)
아래 코드의 IP 주소는 예시용입니다. 본인이 운영 중인 실제 서버 주소로 변경하여 사용하세요.
document.getElementById('syncBtn').addEventListener('click', async () => {
const status = document.getElementById('status');
status.innerText = "서버로 전송 중...";
try {
// 현재 브라우저에서 티스토리 쿠키 추출
const cookies = await chrome.cookies.getAll({ domain: "tistory.com" });
// 구축한 API 서버로 안전하게 데이터 배달
const res = await fetch('http://본인_서버_IP:12345/sync_data', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(cookies)
});
if (res.ok) status.innerText = "동기화에 성공했습니다!";
else status.innerText = "서버 응답 오류 발생";
} catch (e) {
status.innerText = "연결 실패: " + e.message;
}
});2-2. 사용자 인터페이스 (popup.html)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
body {
width: 220px;
padding: 15px;
font-family: 'Malgun Gothic', sans-serif;
}
button {
width: 100%;
padding: 12px;
cursor: pointer;
background: #ff5a5f;
color: white;
border: none;
border-radius: 6px;
font-weight: bold;
}
</style>
</head>
<body>
<h3>Tistory Sync</h3>
<button id="syncBtn">쿠키 서버로 전송</button>
<p id="status" style="font-size: 13px; margin-top: 12px; color: #666;"></p>
<script src="popup.js"></script>
</body>
</html>2-3. 확장 프로그램 설정 (manifest.json)
{
"manifest_version": 3,
"name": "Tistory Cookie Sync",
"version": "1.0",
"description": "티스토리 쿠키 데이터를 서버로 자동 전송하는 도구입니다.",
"permissions": ["cookies", "storage", "tabs"],
"host_permissions": [
"https://*.tistory.com/*",
"http://본인_서버_IP/*"
],
"action": {
"default_popup": "popup.html"
}
}2-4. 서버 재부팅 시 자동 실행 설정 (Crontab)
서버가 갑자기 꺼졌다 켜져도 수신 서버 스크립트가 자동으로 실행되도록 설정해야 관리 포인트가 줄어듭니다. 크론탭을 활용해 보세요.
# 크론탭 설정 편집기 열기
crontab -e
# 파일의 가장 아랫부분에 아래 내용을 추가하세요 (경로는 실제 위치에 맞게 수정)
@reboot nohup python3 /home/ubuntu/server_receiver.py /home/ubuntu/server.log 2&1 &방법 2. [반자동] 쿠키 추출 도구와 파일 전송 활용하기
직접 확장 프로그램을 만드는 과정이 복잡하게 느껴진다면, 이미 검증된 쿠키 추출 도구인 ‘EditThisCookie‘를 사용해 보세요. JSON 파일 형태로 쿠키를 내려받은 뒤 서버에 업로드하는 수동 쿠키 갱신 방식입니다. EditThisCookie를 사용하는 방식은 별도의 수신 전용 파이썬 서버(Flask)가 필요 없습니다.

1) 브라우저에서 쿠키 추출하기
- 크롬 웹스토어에서 EditThisCookie 또는 Cookie-Editor를 검색하여 설치합니다.
- 티스토리 블로그 관리 페이지에 접속한 상태에서 설치한 확장 프로그램 아이콘을 누릅니다.
- 내보내기(Export) 기능을 이용해 쿠키 정보를 클립보드에 복사하거나 텍스트 파일(cookies.txt)로 저장합니다.
2) 파이썬 스크립트로 서버에 전송하기
추출된 데이터를 자동화 봇이 읽을 수 있는 Pickle 파일로 변환한 뒤, SCP 명령어를 통해 서버로 안전하게 배달하는 파이썬 코드입니다.
import pickle
import subprocess
import os
import json
# --- 사용자 환경 설정 구역 ---
# 실제 운영 중인 서버 주소와 포트를 정확히 입력하세요.
SERVER_IP = "123.123.123.123"
SERVER_PORT = "54321" # SSH 포트 번호
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# 윈도우 환경에서는 경로에 역슬래시(\) 두 개를 쓰거나 따옴표로 감싸야 합니다.
KEY_PATH = os.path.join(BASE_DIR, "c:/path/to/your/ssh-key.key")
COOKIE_TXT_PATH = os.path.join(BASE_DIR, "cookies.txt")
PKL_OUTPUT = os.path.join(BASE_DIR, "tistory_cookies.pkl")
def sync():
try:
# 1. SSH 키 파일 유효성 검사
if not os.path.exists(KEY_PATH):
print(f"[에러] 인증 키 파일을 찾을 수 없습니다: {KEY_PATH}")
return
# 2. 저장한 쿠키 파일 읽기
if not os.path.exists(COOKIE_TXT_PATH):
print(f"[에러] {COOKIE_TXT_PATH} 파일이 없습니다. 쿠키를 먼저 저장해 주세요.")
return
print(f"[*] {COOKIE_TXT_PATH}에서 데이터를 읽어오는 중입니다...")
with open(COOKIE_TXT_PATH, "r", encoding="utf-8") as f:
raw_json = f.read().strip()
if not raw_json:
print("[에러] 파일 내용이 비어 있습니다.")
return
# 3. 데이터 정제 및 형식 변환
raw_cookies = json.loads(raw_json)
formatted_cookies = []
for c in raw_cookies:
formatted_cookies.append({
'domain': c.get('domain'),
'name': c.get('name'),
'value': c.get('value'),
'path': c.get('path', '/'),
'secure': c.get('secure', False)
})
# 4. 서버 봇 전용 Pickle 파일로 변환 저장
with open(PKL_OUTPUT, "wb") as f:
pickle.dump(formatted_cookies, f)
print(f"[*] 변환 완료: {len(formatted_cookies)}개의 쿠키 항목을 추출했습니다.")
# 5. SCP를 이용한 안전한 파일 전송
print(f"[*] 서버({SERVER_IP})로 안전하게 전송을 시작합니다...")
# 윈도우용 SCP 명령어 구성
cmd = f'scp -i "{KEY_PATH}" -P {SERVER_PORT} "{PKL_OUTPUT}" ubuntu@{SERVER_IP}:/home/ubuntu/'
result = subprocess.run(cmd, shell=True)
if result.returncode == 0:
print("\n[성공] 서버에 로그인 쿠키 전송을 모두 마쳤습니다!")
else:
print("\n[실패] 전송 중 오류가 발생했습니다. 네트워크 설정을 확인하세요.")
except json.JSONDecodeError:
print("\n[에러] JSON 형식이 올바르지 않습니다.")
except Exception as e:
print(f"\n[에러] 예외 발생: {e}")
if __name__ == "__main__":
sync()드디어 티스토리 자동화 수익형 블로그를 운영하기 위한 완벽한 밑작업이 끝났습니다! 이제 클릭 한 번으로 번거로운 로그인 관리에서 해방되어 보세요. 훨씬 쾌적한 포스팅 자동화 환경을 경험하실 수 있을 겁니다.