본문 바로가기
programming/python

[python] 티스토리 글 자동 작성 하는 방법 1 - 초기 설정

by FAPER 2024. 9. 1.

티스토리 api 중단..

 

티스토리에 뭔가 꾸준한 글을 작성하고 싶은데 api가 중단된 듯하다.

Chat GPT가 글을 잘 써주기도 하고, 자동으로 블로그 글을 써준다는 점에서 상당히 흥미로운 내용이라서 한번 해보려고 했는데 이제 지원을 하지 않는다. 

 

자동화해서 글을 쓰면 내가 힘들게 글을 쓸 필요도 없고 좋은 것 같다.

 

셀레니움 vs requests

보통 이런 자동화는 셀레니움을 많이 쓰는데, 게시글 자동 작성에 셀레니움까지 쓰는 것은 너무 과하다는 생각이 든다.

 

셀레니움은 쉽게 말해서 크롬 브라우저를 똑같이 하나 열어서 로그인 창이 뜨면 아이디 input 태그를 찾아서 클릭하고 아이디를 입력하고 비밀번호 input 태그를 찾아서 클릭하고 비밀번호를 입력하고 로그인 버튼을 찾은 다음에 클릭한 다음에 오른쪽 상단쯤에 있는 글쓰기 버튼을 찾아서 클릭하고 이 글쓰기 페이지로 오면 제목 버튼을 찾아서 클릭하고 제목을 입력하고 카테고리 select 박스를 찾아서 클릭하고 카테고리를 선택한다.

 

글로 써도 귀찮은걸 코드로 짤 생각하니 벌써 어지럽다.

 

그냥 글 쓸 때 패킷을 잡아서 그대로 파이썬 코드로 다시 짜면 되지 않나?라는 생각이 들었다.

 

 

 

결국 저 부분만 똑같이 보내주면 된다는 뜻이다.

중요한 건 글쓰기 권한을 확인하기 위한 Cookie : 자리의 TSSESION과 _T_ANO의 값이다.

이건 여러분들이 로그인을 했을 때 서버에게 로그인 한 사람이 누군지 알려주는 일종의 티켓 같은 거라고 이해하면 된다. 그래서 저 쿠키를 모자이크 안 하고 그냥 올리면 저 쿠기가 만료되기 전까진 이 글 읽은 모든 사람이 내 계정으로 글을 쓸 수 있다. 

import requests

blog = "faper.tistory.com"
cookie = '''여러분들의 쿠키'''

url = "https://"+blog+"/manage/post.json"

headers = {
    "Host": blog,
    "Cookie": cookie,
    "Sec-Ch-Ua": "\"Chromium\";v=\"127\", \"Not)A;Brand\";v=\"99\"",
    "Accept": "application/json, text/plain, */*",
    "Sec-Ch-Ua-Platform": "\"Windows\"",
    "Accept-Language": "ko-KR",
    "Sec-Ch-Ua-Mobile": "?0",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.100 Safari/537.36",
    "Content-Type": "application/json;charset=UTF-8",
    "Origin": "https://"+blog,
    "Sec-Fetch-Site": "same-origin",
    "Sec-Fetch-Mode": "cors",
    "Sec-Fetch-Dest": "empty",
    "Referer": "https://"+blog+"/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts%2F",
    "Accept-Encoding": "gzip, deflate, br",
    "Priority": "u=1, i"
}

data = {
    "id": "0",
    "title": "dd3",
    "content": "<h1>큰제목</h1>\n<p>테스트 본문</p>\n<pre><code class=\"language-py\">소스코드 </code></pre>\n",
    "slogan": "dd",
    "visibility": 20,
    "category": 1157903,
    "tag": "태그",
    "published": 1,
    "password": "",
    "uselessMarginForEntry": 1,
    "daumLike": "401",
    "cclCommercial": 0,
    "cclDerive": 0,
    "thumbnail": None,
    "type": "post",
    "attachments": [],
    "recaptchaValue": "",
    "draftSequence": None
}

response = requests.post(url, headers=headers, json=data)

print(response.status_code)
print(response.json())

 

일단 이렇게 한번 써봤다. 과연 글이 써질까?

200 이 오는 걸 보니 일단 정상적으로 요청이 날아간 듯한다.

디지털 포렌식 카테고리에 가보니 실제로 글이 써져 있는 것을 볼 수 있다.

반복문으로 여러 개 써봐도 똑같이 써진다.

 

HTTP/2 403 Forbidden
Date: Sat, 31 Aug 2024 22:25:49 GMT
Content-Type: application/json;charset=UTF-8
Content-Length: 83
T_userid: 3856273
X-Content-Type-Options: nosniff
X-Xss-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains

하루에 새롭게 공개 발행할 수 있는 글은 최대 15개까지입니다

 

그리고 새롭게 알게 된 사실인데, 하루에 공개글은 15개까지 밖에 못쓴다. 테스트한다고 만들고 지우고 했더니..

 

아무튼 이렇게 간단하게 파이썬 코드로 티스토리 글을 자동 작성하는 방법에 대해 알아보았다. 

 

저기에 들어가는 카테고리나 그런 값들은 직접 블로그에 맞게 확인을 해봐야 하는 거라 아마 쿠키를 본인걸로 바꿔도 제대로 작동 안할 수도 있다. 꼭 본인의 환경에서 먼저 테스트를 하고 코드를 짜길 바란다.