Jak działają usługi krótkich adresów URL?

105

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?

Nathan Campos
źródło
1
Aby przeformułować pytanie [inne niż]: „Jak działają usługi takie jak TinyURL? Czy po prostu łączą mały klucz adresu URL z [wirtualną?] Stroną internetową, która po prostu zapewnia„ przekierowanie HTTP ”do oryginalnego adresu URL? Czy to właśnie Ty pytasz?
mjv
1
Czy skrócone adresy URL wygasają? (tj wpisy bazy danych dla tych adresów URL są usuwane z serwerów)
THD
2
@thd: tak, ale może to zależeć od (codziennych) trafień i polityki dostawcy usług z krótkimi adresami URL. Mogą również pozwolić na nigdy nie wygaśnięcie, niektórzy proszą o członkostwo.
Abel
Możliwy duplikat Jak działa skracacz adresów URL?
roottraveller

Odpowiedzi:

224

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).

Abel
źródło
2
Właściwie myślę, że Bit.ly używa HTTP 301 zamiast 302 (ostatnio słyszałem)
Kenny Cason
1
Ponieważ bit.ly nie pozwala ci zmienić miejsca, do którego wskazuje jeden z ich adresów URL, 301 ma sens. Nie ma potrzeby zapamiętywania wersji bit.ly i ponownego sprawdzania jej.
Joost Schuur
11
@KennyCason / @Joost Schuur: rzeczywiście używany jest protokół HTTP 301, jednak z sygnaturą czasową. To zmienia to w Movednie Moved 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 Permanentlya 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.
Abel
6
Przykładowy bitly URL jest teraz prawdziwy i faktycznie przekierowuje z powrotem do tego pytania ;-) Zobacz stronę informacyjną bitly.com/duSk8wK+ .
Ronald
1
@Costa: istnieje wiele sposobów liczenia kliknięć, możliwe, że śledzi identyfikator Twojej karty sieciowej, co jest sposobem śledzenia, czy żądanie pochodzi z tego samego komputera. Możliwe jest sfałszowanie lub zmiana tego identyfikatora, nie jest to niezawodne. Możliwe jest również, że śledzi lub wykorzystuje pliki cookie stron trzecich, które zostały ustawione wcześniej i dla tego samego użytkownika w różnych przeglądarkach, co można sprawdzić, usuwając wszystkie dane sesji i używając anonimowej przeglądarki.
Abel
110

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:

ID       URL                           VisitCount
 1       www.google.com                        26
 2       www.stackoverflow.com               2048
 3       www.reddit.com                        64
...
 20103   www.digg.com                         201
 20104   www.4chan.com                         20

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):

Route: www.mytinyurl.com/{UrlID}
Route Action: RouteURL(UrlID);

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ł.

Salcedo
źródło
12
Dzięki za miłe wyjaśnienie. Więc co się dzieje, gdy ktoś próbuje utworzyć krótki adres URL dla już istniejącego długiego adresu URL? Czy przeprowadzają wyszukiwanie pełnotekstowe w bazie danych? Nie sądzę, bo będzie to zbyt czasochłonne. Podejście oparte na skrótach lub skrótach wiadomości wygląda na bardziej praktyczne.
Piyush Kansal
@PiyushKansal możesz użyć skrótu wewnętrznie, 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.glponownie 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?
Kingz
Jak radzą sobie z parametrami adresu URL? Na przykład www.digg.com?filter=123
Ronen
7

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 62stron 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 link bit.lybył odwiedzany 2.1miliard 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.

Matas Vaitkevicius
źródło
5

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

Anand Joshi
źródło