:::: MENU ::::

임베디드보드에서 트위터하기 2 – 아두이노를 이용한 트위터

이전에 올린 임베디드보드에서 트위터하기의 2번째 버젼으로 아두이노를 이용해서 트위터하는 방법에 대한 분석자료입니다.
관련 자료: http://www.arduino.cc/playground/Code/TwitterLibrary
역시 proxy 사용해서 구현을 하고있는데 이전의 Supertweet.net 보다는 간단한 것 같지만, 테스트를 해보니 단점은 같은 내용의 메시지를 연속해서 보내면 에러가 난다. 아마도 스팸성 트윗을 걸러내기 위한 조치 같네요.

먼저 http://arduino-tweet.appspot.com/ 에 접속을 해서 사용하는 트위터 아이디의 토큰을 받는다.
이 토큰은 아래 소스에서 사용이 된다.

트위터 라이브러리 소스

#define LIB_DOMAIN “arduino-tweet.appspot.com”

bool Twitter::post(const char *msg)
{
 DNSError err = EthernetDNS.resolveHostName(LIB_DOMAIN, server);
 if (err != DNSSuccess) {
  return false;
 }
 parseStatus = 0;
 statusCode = 0;
 if (client.connect()) {
  client.println(“POST http://” LIB_DOMAIN “/update HTTP/1.0”);
  client.print(“Content-Length: “);
  client.println(strlen(msg)+strlen(token)+14);
  client.println();
  client.print(“token=”);
  client.print(token);
  client.print(“&status=”);
  client.println(msg);
 } else {
  return false;
 }
 return true;
}

위 소스에서 보듯이 먼저 arduino-tweet.appspot.com에 80 port로 접속을 한후 메시지를 보내는 형태인데, 실제 보내지게 되는 메시지는 다음과 같다. (* 아래 토큰은 남용을 방지하기 위해 임의로 바꿈)

POST http://arduino-tweet.appspot.com/update HTTP/1.0
Content-Length: 79

token=3737638B3-rfAUaR3oPmUZdhVXwpK3xSqBON6BBMVNWgsoqUaD&status=Hello, World 1!
Content-Length는 token의 길이 + 메시지의 길이 + 나머지 문자 14 바이트의 문자(token=과 &status=)이며, 실제 메시지는 &status=이후에 들어간다. 여기서는 Hello, World 1!


문제는 이런 트윗의 내용이 암호화가 되지 않고 전송이 되므로 Wireshark같은 스니퍼로 패킷을 잡으면 내용이 그대로 노출이 된다. 아무튼 임베디드 보드에서도 간단히 트위터를 사용이 가능하다.


So, what do you think ?