Niewiem, czy istnieje taki plugin, ale zainteresowal mnie temat i napisalem program w C pod Linuksa do sprawdzania adresow tnij.org
Lap zrodlo ;)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <unistd.h>
#define URL "tnij.org"
#define PORT 80
#define SIZE 1024
int main(int argc, char *argv[])
{
int sock, i;
struct hostent *ho;
struct sockaddr_in sin;
char buff[SIZE] = {0};
char REQ[128] = {0};
if(argc != 2) {
printf("USAGE: %s <part url>\n", argv[0]);
printf("EXAMPLE: %s cv8\n", argv[0]);
printf("this program required tiny.org url ;)\n");
return 0;
}
strcpy(REQ, "GET /");
strcat(REQ, argv[1]);
strcat(REQ, " HTTP/1.1\r\nHost: ");
strcat(REQ, URL);
strcat(REQ, "\r\nKeep-Alive: 300\r\nConnection: keep-alive\r\n\r\n");
ho = gethostbyname(URL);
sock = socket(AF_INET, SOCK_STREAM, 0);
memset(&sin, '\0', sizeof(struct sockaddr_in));
sin.sin_family = AF_INET;
sin.sin_port = htons(PORT);
memcpy(&(sin.sin_addr.s_addr), ho->h_addr, ho->h_length);
if(connect(sock, (struct sockaddr*)&sin, sizeof(struct sockaddr)) == -1)
return -1;
write(sock, REQ, strlen(REQ));
recv(sock, buff, SIZE, 0);
for(i = 0; buff[i]; i++) {
if(!strncmp(buff+i, "Location: ", 10)) {
i += 10;
while(buff[i] != 0xA) { putchar(buff[i]); i++; }
buff[i+1] = 0;
}
}
puts("");
close(sock);
return 0;
}
Teraz pokrotce jak rozkminilem cale te tiny.org.
Odpalilem wireshark i wszedlem na wlasnie taki skrocony url, nastepnie moim oczom ukazal sie pakiecik http z naglowkiem, w ktorym bylo zapytanie
GET /tutaj_czesc_skrotu HTTP/1.1\r\nHost: tnij.org\r\nKeep-Alive: 300\r\nConnection: keep-alive\r\n\r\n
Juz w tym momencie bylo wszystko jasne, czyli ze najpierw nalezy sie polaczyc z serwerem tnij.org, a nastepnie wyslac takie zapytanie, zawierajace interesujacy skrot.
Jak wszystko pojdzie ok dostajemy odpowiedz HTTP OK, oraz kilka informacji, w tym
Location: <tutaj_adres_dokad_prowadzi_url>
To by bylo na tyle.
Przypuszczam, ze z innymi serwerami jest podobnie.