W jaki sposób usługi takie jak TinyURL lub METAMARK pracy?
Czy po prostu kojarzą mały klucz adresu URL z [wirtualną?] Stroną internetową, która po prostu dostarcza „przekierowanie HTTP” do oryginalnego adresu URL? czy jest w tym więcej „magii”?
[oryginalne sformułowanie] Często korzystam z usług skracania adresów URL, takich jak TinyURL, Metamark i inne, ale za każdym razem zastanawiam się, jak działają te usługi. Czy tworzą nowy plik, który przekierowuje na inną stronę, czy też korzystają z subdomen?
web-services
url
url-shortener
bit.ly
short-url
Nathan Campos
źródło
źródło
Odpowiedzi:
Nie, nie używają plików. Po kliknięciu takiego łącza do ich serwera wysyłane jest żądanie HTTP z pełnym adresem URL, na przykład http://bit.ly/duSk8wK (linki do tego pytania). Czytają część ścieżki (tutaj
duSk8wK
), która jest mapowana do ich bazy danych. W bazie danych znajdują opis (czasami), Twoje imię (czasami) i prawdziwy adres URL. Następnie wysyłają przekierowanie, które jest odpowiedzią HTTP 302 i docelowym adresem URL w nagłówku.To bezpośrednie przekierowanie jest ważne. Gdybyś miał użyć plików lub najpierw załadować HTML, a następnie przekierować, przeglądarka dodałaby TinyUrl do historii, co nie jest tym, czego chcesz. Ponadto witryna, do której następuje przekierowanie, będzie widzieć odsyłacz (witrynę, z której pochodzisz) jako witrynę, do której znajduje się łącze TinyUrl (tj. Twitter.com, Twoja własna witryna, niezależnie od tego, gdzie znajduje się łącze). Jest to równie ważne, aby właściciele witryn mogli zobaczyć, skąd pochodzą ludzie. To również nie zadziała, jeśli zostanie załadowana strona, która przekierowuje.
PS: istnieje więcej typów przekierowań. HTTP 301 oznacza: przekierowanie stałe. Jeśli tak się stanie, przeglądarka nie będzie już żądać witryny bit.ly lub TinyUrl, a te witryny chcą liczyć odwiedziny. Dlatego używany jest protokół HTTP 302, który jest tymczasowym przekierowaniem. Przeglądarka za każdym razem zapyta TinyUrl.com lub bit.ly, co umożliwia zliczanie odwiedzin (oferują to niektóre małe usługi url).
źródło
Moved
nieMoved Permanently
. To jest subtelna różnica. Dodając znacznik czasu, przeglądarka uważa, że powinna sprawdzić, czy zasób został zmieniony, czy nie, kiedy upłynął limit czasu. Inne, takie jak is.gd, używają normalnego,301 Moved Permanently
a przeglądarka nie musi ponownie sprawdzać (ale często to robi). Wreszcie, usługi takie jak url4.eu w ogóle nie przekierowują, ale najpierw wyświetlają reklamę. Dzięki 301 usługi nadal mogą liczyć unikalnych odwiedzających , ale nie wszystkie trafienia.Inni odpowiedzieli, jak działają przekierowania, ale powinieneś także wiedzieć, jak generują swoje małe adresy URL. Pomyłkowo usłyszysz, że tworzą skrót adresu URL, aby wygenerować ten unikalny kod dla skróconego adresu URL. W większości przypadków jest to niepoprawne, ponieważ nie używają algorytmu haszującego (gdzie potencjalnie mogą wystąpić kolizje).
Większość popularnych usług skracania adresów URL po prostu pobiera identyfikator z bazy danych adresu URL, a następnie konwertuje go na Base 36 [a-z0-9] (bez rozróżniania wielkości liter) lub Base 62 (rozróżnianie wielkości liter).
Uproszczony przykład tabeli bazy danych TinyURL:
Struktury internetowe, które umożliwiają elastyczny routing, sprawiają, że obsługa przychodzących adresów URL jest naprawdę łatwa (Ruby, ASP.NET MVC itp.).
Tak więc na swoim serwerze internetowym możesz mieć akcję routingu, która wygląda jak (pseudo kod):
Który kieruje wszelkie przychodzące żądania do serwera, które zawierają tekst po Twojej domenie www.mytinyurl.com, do powiązanej metody RouteURL. Dostarcza tekst, który jest przekazywany po ukośniku w adresie URL do tej metody.
Powiedzmy, że prosiłeś o: www.mytinyurl.com/fif
Następnie do metody RouteURL (String UrlID) zostanie przekazana wartość „fif”. RouteURL zamieniłby wówczas „fif” na jego odpowiednik base10, 20103, i zostanie wysłane żądanie do bazy danych, aby przekierować do dowolnego adresu URL przechowywanego pod identyfikatorem 20103 (w tym przypadku www.digg.com). Możesz również zwiększyć liczbę odwiedzin Digg o jeden przed przekierowaniem do prawidłowego adresu URL.
To jest naprawdę uproszczony przykład, ale powinieneś być w stanie uzyskać ogólny pomysł.
źródło
O(1)
aby wyszukać duplikaty; a następnie skieruj do tego istniejący mały adres URL lub może zdecydować się na wygenerowanie nowego. O ile wiem,goo.gl
ponownie wykorzystuje małe adresy URL dla tego samego adresu URL; spróbuj tego na swoim końcu dla tej strony: Czy otrzymujesz to >>goo.gl/8gVb8X
?Jako rozszerzenie @A Salcedo odpowiedz:
Niektóre usługi skracania adresów URL (Tinyarro.ws) posuwają się do skrajności, używając Unicode (UTF-8) do kodowania znaków w skróconych adresach URL - co pozwala na większą liczbę witryn internetowych bez konieczności dodawania dodatkowego symbolu. Ponieważ większość UTF-8 jest akceptowana do użytku ( (IRI) RFC 3987 obsługiwany przez większość przeglądarek ), który przeskakuje ze
62
stron na symbol do ~1,112,064
.Aby spojrzeć z perspektywy, można zakodować 1.2366863e + 12 witryn za pomocą 2 symboli (
1,112,064*1,112,064
) - w listopadzie 2009 skrócony linkbit.ly
był odwiedzany2.1
miliard razy ( mniej więcej w tym czasie bit.ly i TinyURL były najczęściej używanymi usługami skracania adresów URL ). co jest ~ 600 razy mniej niż można zmieścić w zaledwie 2 symbolach, więc przez cały czas istnienia wszystkich usług skracania adresów URL powinno to trwać minimum kolejne 20 lat, aż do dodania trzeciego symbolu.źródło
Krótko mówiąc, narzędzie do skracania adresów URL mapuje dowolną długą sekwencję znaków (oryginalny, długi, kiepski adres URL) na krótką i zgrabną sekwencję znaków. To nic innego jak haszowanie, które jest najczęściej używane do tworzenia tabel odnośników, HashMap, md5 Hash do celów kryptograficznych itp.
Aby zrozumieć proces skracania adresów URL, stworzyłem projekt demonstracyjny na GitHub, a także post na blogu. Zapoznaj się z tym i daj mi znać, jeśli było to pomocne.
Post na blogu: Skracanie adresów URL
źródło