Search This Blog

Wednesday, January 26, 2011

Getting twitter feed while Twitter is blocked

I don't know if u know what is going on in Egypt but there is lots of problems with the government and they blocked twitter.

anyways, I think I do know how to get over it, the matter is simple, try to get any of twitter's IPs' and then connect to it using the IP

The problem with it is, the browsers will use it The IP as a Host in the HTTP header, I have tried with many plugin to use something else but I always get "the redirect code" but when I did telnet on the IP and Wrote the http my self it did work :D "how do write HTTP :D"
anyways, I looked for a simple client and I tried something and it is 100% working



#define PORT 80

#define HOST "128.121.243.228"

#define DIRSIZE 8192000

#define HTTP_HEADER "GET /statuses/user_timeline/Neo_4583.json HTTP/1.1\nHost: twitter.com\n\n"


char* strToSend = HTTP_HEADER;

char hostname[100];

char dir[DIRSIZE];

int sd;

struct sockaddr_in pin;

struct hostent *hp;

strcpy(hostname,HOST);


if ((hp = gethostbyname(hostname)) == 0) {

exit(1);

}

memset(&pin, 0, sizeof(pin));

pin.sin_family = AF_INET;

pin.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr))->s_addr;

pin.sin_port = htons(PORT);

if ((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {

perror("socket");

exit(1);

}

if (connect(sd,(struct sockaddr *) &pin, sizeof(pin)) == -1) {

perror("connect");

exit(1);

}


if (send(sd, strToSend, strlen(strToSend), 0) == -1) {

exit(1);

}

if (recv(sd, dir, DIRSIZE, MSG_WAITALL) == -1) {

exit(1);

}else {

// The data is ready to be served

printf("%s\n", dir);

}

close(sd);



"Next step, modify the HTTP header in the browser so it works correctly with twitter"
Enjoy the code
Thanks for your time

BR
Ahmed Essam