Wstrzymywanie przekierowywania URL

0

W Internecie jest co najmniej kilka skracaczy adresów URL. Niektóre z nich to Tnij.org, urlenco.de itp.

Wadą większości skracaczy jest to, że pierwotny adres poznajemy dopiero w momencie otwierania go, czyli jeżeli jest to strona z wirusem, to dowiemy się o tym za późno, bo strona się otworzy, a wirus się uruchomi.

Ja uzywam Firefox w najnowszej wersji.

Czy istnieje taki plugin, że jak wejdę w adres np. http://urlenco.de/buogemzh

to nie wyświetli się pierwotny adres, który kryje się pod tym skrótem, tylko wyświetli się URL tej strony i mozna podjąć decyzję, czy wejść na tą stronę.

Taki plugin byłby niezależny od skracacza, bo wyłapywałby moment przekierowania URL (zmiana serwera WWW), które następuje krótko po wejściu na serwer skracacza i na początku odmówiłby wejścia na pierwotny adres, tylko wyświetlił się na ekranie treść URL pierwotnego adresu.

0

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.

0

Z dużym trudem znalazłem: https://addons.mozilla.org/pl/firefox/addon/48582

Czegoś takiego szukałem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1