트랙백 문제
얼마 전에 올린 글, 희한한 티스토리의 트랙백 문제에서 설명한 것처럼 일부 블로그에서 티스토리로 트랙백이 되지 않고 있다. 또 여기에 댓글 알리미도 동작하지 않는다고 한다. 미루어 짐작하지만 댓글 알리미도 같은 문제로 동작하지 않는 것으로 생각된다. 또 이 문제는 "티스토리에서 트랙백 스팸을 막기위해 세션 URL을 사용하기 때문에 발생하는 일"로 추정하고 있다.
트랙백 문제
얼마 전에 올린 글, 희한한 티스토리의 트랙백 문제에서 설명한 것처럼 일부 블로그에서 티스토리로의 트랙백이 되지 않고 있다. 또 여기에 댓글 알리미도 동작하지 않는다고 한다. 미루어 짐작하지만 댓글 알리미도 같은 문제로 동작하지 않는 것으로 생각된다. 또 이 문제는 티스토리에서 트랙백 스팸을 막기위해 세션 URL을 사용하기 때문에 발생하는 일로 추정하고 있다.
텍스트큐브 패치
그림을 보면 알 수 있지만 'GET으로 트랙백 URL을 요청'하면 '세션 코드가 붙은 URL을 반환'한다. 그리고 이 URL로 다시 요청을 한 뒤 트랙백을 보내면 트랙백이 정상적으로 간다. 원래는 이 기능을 구현한 프로그램을 따로 작성한 뒤 이 프로그램을 이용해서 '세션 코드가 붙은 URL을 요청'한 뒤 텍스트큐브로 트랙백을 보냈었다. 그러나 이 방법은 일반인들이 적용하기 힘들며, 두번 작업을 해야 하기 때문에 아예 텍스트큐브를 패치했다. 절차는 다음과 같다.
- 좋아하는 편집기(예: EditPlus)로
library/model/blog.trackback.php
파일을 연다. 이 파일의 끝 부분에 다음 내용을 추가한다.
function trackbackTistory ($query, $host, $port=80, $timeout=10) { $socket = fsockopen($host, $port, $errno, $errstr, 10); fwrite($socket, "$query\r\n"); $res=fread($socket, 10240); fclose($socket); return $res; }
sendTrackback 함수에서 if ($isNeedConvert) {...} else {...}문을 찾은 뒤 else문의
$isSuccess = $request->send($content);
다음 행에 아래의 내용을 추가한다.if(!$isSucess) { //url로 호스트와 포트, 경로를 판정 $request = @parse_url($url); $tistory_host=$request['host']; $tistory_port=$request['port']; $tistory_path=$request['path']; // 트랙백 URL을 요청 $query="GET ".불tistory_path." HTTP/1.1\r\nHost: ".불tistory_host."\r\nConnection: Close\r\n\r\n"; $res=trackbackTistory($query, $tistory_host); // 세션 코드가 붙은 URL을 찾아 이 URL로 다시 요청 if(preg_match("/Location: ([^\r\n]*)\r\n/is", $res, $match)) { $query="GET ".불match[1]." HTTP/1.1\r\nHost: ".불tistory_host."\r\nConnection: Close\r\n\r\n"; $res=trackbackTistory($query, $tistory_host); } // 트랙백을 다시 보냄 $request = new HTTPRequest('POST', $url); $request->contentType = 'application/x-www-form-urlencoded; charset=utf-8'; $request->referer = $link; $isSuccess = $request->send($content); }
내용을 보면 알 수 있지만 $isSucess
가 false면 요청한 URL로 세션 코드가 붙은 URL을 가져온다. 그리고이 URL을 다시 요청한 뒤 트랙백을 보내도록 한 것이다. 실제 이 코드를 삽입한 뒤 티스토리[1]에도 트랙백이 정상적으로 가는 것을 확인했다. 줄 번호를 입력하는 것이 더 도움이 되겠지만 현재 내가 사용하고 있는 텍스트큐브는 1.7.7 베타2이고 중간에 수정한 부분이 있기 때문에 줄 번호는 생략했다.
- 누에고치님 글, 4대강 정비 사업의 필요성에 트랙백을 보냈다. 처음에는 '트랙백을 보낼 수 없다'는 메시지가 떳지만 이 패치를 적용하자 바로 트랙백이 전송됐다. ↩
Trackback
Trackback Address :: https://offree.net/trackback/2270
-
Subject : 티스토리 fsockopen() 문제 간단하게 해결하기
Tracked from HEURISTING.NET 2009/02/01 04:43 del.어쩐지 요 근래 들어서 티스토리 쪽 글이 수집이 안된다 했는데, 도아님의 글을 보고 원인을 알았습니다. 도아님 글에는 티스토리에서 fsockopen() 함수가 왜 동작하지 않는지 원리와 텍스트큐브?
Comments
-
-
-
민노씨 2009/01/30 19:07
리베님께서 알려주셔서 냉큼( ^ ^; ) 달려왔습니다.
제 경우에는 티스토리에서 저에게 보내오는 트랙백을 계속해서 튕겨내고 있는데요(최근에는 제가 보내는 것도 잘 안되고 말이죠).
도아님께서 알려주신 방법을 한번 시도해봐야겠네요.
고맙습니다. : ) -
-
-
-
-
-
-
-
-
하민혁 2009/01/31 09:38
텍스트큐브 1.7.7 베타2로 갈아탄 이후 특정 서비스로의 트랙백이 안 되더니 도아님이 한 방에 해결을 해주셨네요 패치 후 확인해보니 모든 서비스로의 트랙백이 원활하게 작동하고 있습니다 고맙습니다
도아님 글을 TNF 포럼 게시판의 문답게시판에 링크로 겁니다
http://forum.tattersite.com/ko/viewtopic.php?id=7657 -
-
-
휴리스틱 2009/02/01 13:29
저도 며칠 전부터 티스토리로 트랙백이 안가더라고요. 트랙백 뿐만이 아니라 웹에서 티스토리로 가는 소켓 자체가 열리지가 않았습니다. 그래서 티스토리에서 제 웹서버를 스팸으로 오인하고 차단했나 했었는데, 도아님 글을 보고 문제를 해결할 수 있었습니다. 감사합니다.
-
-
하민혁 2009/02/16 20:58
위에서 다른 분도 문제점을 제기해주셨는데요.
이글루스 뿐만 아니라 네이버 블로그, 파란블로그를 비롯하여 일부 설치형 블로그에도 몽땅 2개씩 날아갑니다. 새로운 패치 기다리다가 눈 빠질 지경입니다. 패치 언능 좀 해주세요. -_- -
하민혁 2009/02/17 14:11
네. 그렇군요.
근데, 패치는 언제 나오나요? 인간 아닌 블로거를 위한 패치라도 패치는 좀 해주세요.
<덧> 즐겨 하는 트랙백을 못 보내고 있습니다. -_-
Facebook