Как URL-корректор вычисляет URL-адрес? Как они работают?

Как URL shortener, например bit.ly вычислить случайный ключ для каждой ссылки? Какой алгоритм мне нужно знать, чтобы создать свой собственный?

Ответы

Ответ 1

До сих пор я нашел код http://briancray.com/2009/08/26/free-php-url-shortener-script/

function getShortenedURLFromID ($integer, $base = ALLOWED_CHARS)
{
    $length = strlen($base);
    while($integer > $length - 1)
    {
        $out = $base[fmod($integer, $length)] . $out;
        $integer = floor( $integer / $length );
    }
    return $base[$integer] . $out;
}

и более сложный ответ Marcel J., упомянутый выше.

Ответ 2

Я думаю, что они НЕ делают случайным новым ключом и проверяют, существует ли в базе данных, потому что это медленнее, чем просто использовать секвенциальное число и применять некоторый алгоритм criptography algoritm to преобразовать секвенциальный идентификатор в строку UNIQUE.

Пример:

idUrl = 1003;
urlCode = doSomething(idUrl); // 161Llz

URL для использования: http://bit.ly/161Llz

Tks: mykhal и nick johnson

Ответ 3

Возможно, они хранят его в базе данных и просто дают вам идентификатор ссылки. Когда вы запрашиваете этот ключ, они просматривают в своей базе данных и перенаправляют вас на сохраненную реальную ссылку. Чтобы закодировать идентификатор, можно использовать base64 (или подобное).

Ответ 4

Скорее всего, они хранят его в базе данных и просто генерируют ключ случайным образом. Я предполагаю это, потому что вы можете сделать свой собственный ключ, и если бы они просто расшифровали его, вы бы не смогли его самостоятельно выбрать.

Что касается того, как это сделать, вы можете просто создать базу данных в mySQL и провести ее на ключевом и полном сайте. Просто найдите его для ключа, а затем перенаправьте пользователя на полный сайт.