Як працює укорочувач URL-адрес? [зачинено]


87

Цікаво, як працює укорочувач URL-адрес, наприклад, як вони витягують текст з адресного рядка та відображають його на виправлену URL-адресу, а потім перенаправляють. Якою мовою програмування вони користуються? Як вони підтримують історію картографування? Як вони забезпечують унікальність скороченої URL-адреси? Як неспеціаліст може зняти його, не відвідуючи URL-адресу?


65
лише 3 голоси закрити? давай, він хоче чогось навчитися, швидше закрий !!!
IAdapter

22
Це було саме те запитання, яке у мене було, і я дуже розчарований, бачачи, що воно закрите. Це не є двозначним чи неповним - він дуже конкретний у питанні.
thumbtackthief

3
@bmargulies Я думаю, що питання не слід закривати, це було дуже корисно і навіть відповіло, також думаю, що 43 голоси за, і ви вирішили його закрити .. чому ??
Амрут,

Відповіді:


40

Вікі - твій друг

В основному веб-сайт із коротшою назвою використовується як власник місця, наприклад bit.ly.

Потім bit.ly генерує ключ для надання користувачеві, який генерується випадковим чином, щоб не повторюватись. Маючи 35 варіантів символів і 8 чи близько значень, підрахуйте. Це багато можливих ключів. Якщо URL-адреса дорівнює раніше існуючому ключу, я пам’ятаю, десь читав, що вони також повторно використовують ключі.

Вони насправді не використовують конкретну мову програмування, вони просто використовують просте перенаправлення URL-адрес, яке можна зробити за допомогою HTML, я вважаю.


о, це круто. Щиро дякую
prap19

25
Переспрямування НЕ робиться з HTML, це робиться з заголовками HTTP. (Код стану 301 або 302, залежно).
Ягель

Ну гаразд, це мало б більше сенсу. Дякую за роз'яснення.
Даніель Г. Вільсон

Вони повинні використовувати заголовок Location для переспрямування.
Jeevan Patil

26

Скорочувачі URL-адрес просто генерують шорт-код, призначають цільову URL-адресу шорткоду та надають нову URL-адресу. Відвідування URL-адреси виконує пошук у базі даних із використанням шорткоду як ключа та перенаправляє вас на цільову URL-адресу. Не існує алгоритмічного зв’язку між скороченою URL-адресою та цільовою URL-адресою, тому ви не можете «зняти карту», ​​не проходячи через системи скорочення URL-адрес.

Ви можете зробити це за допомогою будь-якої мови програмування та сховища даних. Генерація коду є тривіальною, щоб також забезпечити унікальність; якщо у вас був інкрементний первинний цілочисельний ключ, ви можете просто закодувати ключ як base62 і подати його. Оскільки коди мають приросту приросту, у вас ніколи не виникне конфлікту.


19

Насправді процес досить простий: існує сценарій, який запитує URL-адресу, генерує випадковий рядок (і перевіряє, що цей рядок ще не використовується) і поміщає ці два в якусь базу даних. Коли ви запитуєте URL-адресу, інший скрипт шукає у базі даних випадковий рядок, і якщо його знайде переспрямовує вас на сайт.

Звичайно, це складніше у виробництві через необхідні функції, такі як запобігання зловживанням, фільтрація URL-адрес, запобігання спаму, перевірка URL-адреси тощо. Але їх досить просто реалізувати.


Мова не має значення, в основному це зробить будь-яка людина.


9
"і перевіряє, що цей рядок ще не використовується" .. ЯК? Це найбільше питання
Стюї

3
@Stewie: SELECT * FROM mappings WHERE key = stringToCheck, і перевірити, чи повертаються якісь рядки? Або будь-яка подібна річ у вибраній мові бази даних. Чесно кажучи, це найпростіша частина всієї проблеми.
Девід Лю

@Stewie Або вони можуть використовувати HashMap для картографування<key, url>
roottraveller

@DavidLiu Чи не потрібно продовжувати відновлювати та видавати запити, поки це не дасть результатів? Зі збільшенням обсягу даних час перевірки зростає. У гіршому випадку кількість запитів до вашої БД буде n-1, де n - кількість "рядків"; що відбувається, коли у вас є 100 мільйонів рядків?
Стюї

@Stewie Це зовсім інше питання, проблема в принципі самого рішення. Ви маєте рацію, що проблема регенерації з часом стане проблемою, але знову ж таки, саме тому я сказав, що "перевірка рядка ще не використовується" - це найпростіша частина рішення. Існує безліч альтернативних рішень, які можна зробити випадковим способом без заміни.
David Liu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.