희한한 티스토리의 트랙백 문제

트랙백 문제

이 블로그는 계속 트랙백 문제가 있었다. 어떨 때는 트랙백이 가지 않는다. 또 이덕에 트랙백으로 동작하는 다음 블로거뉴스 플러그인도 동작하지 않았다. 결국 이 문제는 날 잡아 해결을 봤다. 그런데 또 블로거뉴스 플러그인이 동작하지 않았다. 이 문제는 블로거뉴스에서 API를 바꾸었기 때문에 발생한 현상으로 역시 직접 패치했다. 그런데 또 트랙백이 동작하지 않았다. 그런데 이번에는 소스를 분석해도 그 원인을 찾을 수 없었다.

목차

트랙백 문제

이 블로그는 계속 트랙백 문제가 있었다. 어떨 때는 트랙백이 가지 않는다. 또 이덕에 트랙백으로 동작하는 다음 블로거뉴스 플러그인도 동작하지 않았다. 결국 이 문제는 날 잡아 해결을 봤다. 그런데 또 플러그인이 동작하지 않았다. 이 문제는 블로거뉴스에서 API를 바꾸었기 때문에 발생한 현상으로 역시 직접 패치했다. 그런데 또 트랙백이 동작하지 않았다. 그런데 이번에는 소스를 분석해도 그 원인을 찾을 수 없었다.

결국 트랙백을 마지막으로 보낸 날을 기준으로 이 문제가 '서비스관리/서버'에서 '외부 리소스 사용'을 체크했기 때문에 발생한 문제라는 것을 알았다. 그런데 또 트랙백이 동작하지 않았다. 다만 이번 트랙백은 모든 트랙백이 가지 않는 것이 아니라 티스토리로 보내는 트랙백만 동작하지 않았다. 이 문제는 텍스트큐브 포럼에도 올라왔고 최면님 역시 같은 문제를 호소했다.

결국 어제 문제의 원인을 파악해 봤다. 그런데 문제의 원인을 찾던 중 티스토리에서 조금 이상한 현상을 발견했다. 일단 telnet을 이용해서 트랙백을 보내면 트랙백은 정상적으로 전송된다. 그러나 telnet으로 직접 연결한 뒤 보내면 정상적으로 가는 트랙백이 PHP의 fsockopen 함수를 이용해서 보내면 항상 408 Request Timeout 오류가 발생하는 것이었다.

인터넷을 찾아 봤지만 이 오류에 대한 질문은 있어도 답은 없었다. 그러던 중 어제 저녁 갑자기 의 트랙백이 정상적으로 동작하는 것을 확인했다. 그래서 이 문제는 티스토리 서버의 문제로 봤다. 아울러 서버에서 이 문제가 고쳐진 것으로 생각했다. 그런데 오늘 다시 트랙백을 보내려고 하니 역시 트랙백이 보내지지 않았다. 그래서 어제 시도한 방법을 그대로 다시 시도해 봤다.

트랙백을 보낸 방법

그런데 한 가지 재미있는 것은 이 방식으로 하면 잠깐 동안은 트랙백이 간다는 점이다. 일단 어떤 방법으로 트랙백을 보냈는지 확인해 보자. 일단 블로그를 호스팅하고 있는 서버에 다음과 같은 트랙백 전용 프로그램을 만들었다.

<?
$socket = fsockopen('offree.com', 80, $errno, $errstr, 10);
$query=<<<___QUERY___
POST /trackback/473 HTTP/1.1
Host: offree.com
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: 2129
Connection: Close

url=http%3A%2F%2Foffree.net%2F2263&title=%EC%A3%BD%EC%9C%BC%EB%A9%B4%20%EC%A0%9C%EB%B0%9C%20%EC%A7%80%EC%98%A5%EC%97%90%20%EA%B0%80%EA%B2%8C%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94&blog_name=%EB%8F%84%EC%95%84%EC%9D%98%20%EC%84%B8%EC%83%81%EC%82%AC%EB%8A%94%20%EC%9D%B4%EC%95%BC%EA%B8%B0&excerpt=%EB%82%B4%EA%B0%80%20%EA%B8%B0%EB%8F%85%EA%B5%90%EC%9D%B8%EB%93%A4%EC%97%90%EA%B2%8C%20%ED%95%AD%EC%83%81%20%ED%95%98%EB%8A%94%20%EC%9D%B4%EC%95%BC%EA%B8%B0%EA%B0%80%20%EC%9E%88%EB%8B%A4.%20%EA%B8%B0%EB%8F%85%EA%B5%90%EC%9D%B8%EB%93%A4%EC%9D%B4%20%EA%B0%80%EB%8A%94%20%EA%B3%B3%EC%9D%B4%20%EC%B2%9C%EB%8B%B9%EC%9D%B4%EB%9D%BC%EB%A9%B4%20%EB%82%9C%20%EC%96%B8%EC%A0%9C%EB%82%98%20%EC%A7%80%EC%98%A5%EC%9D%84%20%ED%83%9D%ED%95%98%EA%B2%A0%EB%8B%A4.%20%EB%82%B4%EA%B2%8C%20%EC%B2%9C%EB%8B%B9%EC%9D%80%20%EA%B8%B0%EB%8F%85%EA%B5%90%EC%9D%B8%20%EC%97%86%EB%8A%94%20%EA%B3%B3%EC%9D%B4%EB%8B%A4.%20%EA%B8%B0%EB%8F%85%EA%B5%90%EC%9D%B8%EB%93%A4%EC%9D%B4%20%EB%AA%A8%EB%A5%B4%EB%8A%94%20%EA%B2%83%EC%9D%80%20%EC%83%81%EB%8B%B9%ED%9E%88%20%EB%A7%8E%EB%8B%A4.%20%EA%B7%B8%20%EC%A4%91%ED%95%98%EB%82%98%EA%B0%80%20%EB%B0%94%EB%A1%9C%20%EC%97%AD%EC%A7%80%EC%82%AC%EC%A7%80%EB%8B%A4.%20%EC%97%AD%EC%A7%80%EC%82%AC%EC%A7%80%EA%B0%80%20%EB%AC%B4%EC%8A%A8%20%EB%9C%BB%EC%9D%B8%EC%A7%80%20%EB%AA%A8%EB%A5%B4%EB%8A%94%20%EA%B8%B0%EB%8F%85%EA%B5%90%EC%9D%B8%EB%93%A4%EC%9D%B4%20%EB%A7%8E%EC%9D%80%20%EA%B2%83%20%EA%B0%99%EC%95%84%20%EB%B6%80%EC%97%B0%20%EC%84%A4%EB%AA%85%ED%95%98%EC%9E%90%EB%A9%B4%20%EC%97%AD%EC%A7%80%EC%82%AC%EC%A7%80%28%E6%98%93%E4%B9%8B%E6%80%9D%E4%B9%8B%29%EB%8A%94%20%EC%B2%98%EC%A7%80%EB%A5%BC%20%EB%B0%94%EA%BF%94%20%EC%83%9D%EA%B0%81%ED%95%98%EB%9D%BC%EB%8A%94%20%EB%9C%BB%EC%9D%B4%EB%8B%A4.%20%EC%9D%B4%EB%9E%98%EB%8F%84%20%EB%AA%A8%EB%A5%B4%EB%8A%94%20%EC%82%AC%EB%9E%8C%EC%9D%B4%20%EC%9E%88%EB%8B%A4%EB%A9%B4%20%EA%B9%80%EA%B1%B4%EB%AA%A8%EC%9D%98%20%EB%85%B8%EB%9E%98%2C%20%ED%95%91%EA%B3%84%EC%9D%98%20%EA%B0%80%EC%82%AC%20%EC%A4%91%20%22%EC%9E%85%EC%9E%A5%20%EB%B0%94%EA%BF%94%20%EC%83%9D%EA%B0%81%EC%9D%84%20%ED%95%B4%EB%B4%90%22%EB%A5%BC%20%EB%96%A0%EC%98%AC%EB%A6%AC%EB%A9%B4%20%EB%90%9C%EB%8B%A4.%20%EC%9A%94%EC%A6%98...
___QUERY___;

fwrite($socket, "$query\r\n");
$res=fread($socket, 10240);
fclose($socket);

echo $res;
?>

확인 절차

소스를 보면 알 수 있지만 fsockopen을 이용해서 offree.com에 소켓 연결한 뒤 HTTP 명세트랙백 명세에 따라 트랙백을 전송하고 그 결과를 화면에 뿌려 주는 간단한 프로그램이다.

  1. 이 프로그램을 웹에서 실행하면 다음 그림처럼 'HTTP/1.1 408 Request Timeout' 메시지가 출력된다.
  2. 프로그램 소스를 POST /trackback/473GET /trackback/473로 바꾼 뒤 다시 실행하면 그림처럼 'HTTP/1.1 302 Moved Temporarily'라는 메시지가 나타난다.
  3. 이 응답은 주소가 /trackback/473에서 /trackback/473?a97ceeb0로 바뀐 것을 말하므로 소스를 GET /trackback/473에서 GET /trackback/473?a97ceeb0로 바꾼 뒤 다시 실행하면 그림처럼 다시 'HTTP/1.1 302 Moved Temporarily'라는 메시지가 나타난다.
  4. 이 상태에서 소스를 GET /trackback/473?a97ceeb0에서 다시 원래의 상태인 POST /trackback/473로 바꾼 뒤 실행하면 다음 그림처럼 트랙백이 정상적으로 전송됐다는 응답 메시지가 나타난다.

일단 이런 단계를 거친 뒤 티스토리에 트랙백을 보내보면 한동안은 트랙백이 정상적으로 간다. 물론 일정 시간이 지나면 다시 트랙백을 보낼 수 없는 상태가 된다. 결국 티스토리에 트랙백을 보내는 것은 이 프로그램을 이용해서 티스토리에 트랙백이 정상적으로 가도록 바꾼 뒤 에서 트랙백을 보내고 있다.

처음에는 의 문제인가 싶어서 다른 무료 호스팅[1]에서 [2]로 트랙백을 보내봤지만 역시 트랙백은 전송되지 않았다. 따라서 카페24의 문제가 아니라 티스토리 서버의 문제로 보이지만 아직까지 이런 현상에 대한 명백한 이유는 알 수 없었다.

참고로 이 과정에서 "URL이 없다"는 메시지(오류 코드 5), "해당하는 글에는 트랙백을 보낼 수 없다"는 메시지(오류 코드 3)도 얻었다. 해당 글에는 트랙백을 보낼 수 없다는 메시지(오류 코드 3)은 같은 글에 같은 트랙백을 보낼 때 발생하는 것[3]으로 봐서 스팸 트랙백을 방지하는 기능으로 보인다.

관련 글타래


  1. Codex.kr이라는 무료 호스팅이다. 월 30G의 전송량을 제공하기 때문에 하루 전송량이 1G 미만인 사람에게는 상당히 유용한 무료호스팅이다. 또 월 전송량을 따지기 때문에 하루 전송량이 1G를 초과해도 사이트가 닫히는 문제는 발생하지 않는다. 마지막으로 제어판을 이용하면 상당히 여러 가지 웹 프로그램을 손쉽게 설치할 수 있는 잇점도 있다. 
  2. Codex.kr에는 도아의 게임이야기(https://gemul.net/)을 호스팅하고 있다. 
  3. 해당 글로 보낸 트랙백을 삭제한 뒤 휴지통까지 비우면 같은 URL의 트랙백을 보낼 수 있다. 
글쓴이
author image
운영체제의 모든 것을 운영하고 있는 IT 블로거. IT 블로거라는 이름은 현재 시국때문에 시사 블로거로 바뀐 상태다. 그러나 나는 아직도 시사와 사회에 관심이 많은 IT 블로거일 뿐이다. 컴퓨터, 운영체제, 시사, 가족, 여행, 맛집, 리뷰등과 살면서 느끼는 소소한 일상이 블로그의 주제이다. 왼쪽의 아이콘은 둘째 딸 다예가 그린 내 모습이다.
2009/01/29 18:47 2009/01/29 18:47
오늘의 글
인기있는 글
조회수 많은 글 | 베오베
댓글 많은 글 | 베오베

Facebook