Как создать сайт для укорачивания ссылок

Сайты для укорачивания ссылок посещают миллионы посетителей в сутки. Это огромный трафик. 
Размещение внизу самой простенькой рекламной картинки обеспечат ваш магазин многотысячными покупками в сутки. А цена создания такого сайта минимальна, т.к. это всего лишь одна страница. Это стоимость одностраничного лендинга в стиле минимализма.


1. Выбор технологий

  • Язык программирования и фреймворк для backend: Python (Flask, Django), Node.js (Express), Ruby (Rails), PHP и т.д.
  • База данных: SQLite, MySQL, PostgreSQL, MongoDB.
  • Frontend: HTML, CSS, JavaScript.
  • Дополнительно: Docker для контейнеризации, AWS или Heroku для развертывания.

2. Создание базы данных

Нужна таблица для хранения оригинальных и укороченных ссылок. Пример таблицы:

id original_url short_url created_at
1 https://example.com abc123 2024-07-24 12:00:00

3. Разработка backend

Flask (Python)

Установим Flask:

bash

pip install Flask

Создаем файл app.py:

python

from flask import Flask, request, redirect, jsonify
import sqlite3
import string
import random
app = Flask(__name__)
DATABASE = ‘urls.db’def create_db():
conn = sqlite3.connect(DATABASE)
c = conn.cursor()
c.execute(»’CREATE TABLE IF NOT EXISTS urls
(id INTEGER PRIMARY KEY AUTOINCREMENT,
original_url TEXT NOT NULL,
short_url TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)»’
)
conn.commit()
conn.close()def generate_short_url():
return ».join(random.choices(string.ascii_letters + string.digits, k=6))

@app.route(‘/shorten’, methods=[‘POST’])
def shorten_url():
original_url = request.json.get(‘original_url’)
short_url = generate_short_url()
conn = sqlite3.connect(DATABASE)
c = conn.cursor()
c.execute(‘INSERT INTO urls (original_url, short_url) VALUES (?, ?)’, (original_url, short_url))
conn.commit()
conn.close()
return jsonify({‘original_url’: original_url, ‘short_url’: short_url})

@app.route(‘/<short_url>’)
def redirect_url(short_url):
conn = sqlite3.connect(DATABASE)
c = conn.cursor()
c.execute(‘SELECT original_url FROM urls WHERE short_url = ?’, (short_url,))
result = c.fetchone()
conn.close()
if result:
return redirect(result[0])
else:
return jsonify({‘error’: ‘URL not found’}), 404

if __name__ == ‘__main__’:
create_db()
app.run(debug=True)

4. Разработка frontend

Создаем простой HTML файл index.html:

html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>URL Shortener</title>
<script>
async function shortenURL() {
const originalURL = document.getElementById('original-url').value;
const response = await fetch('/shorten', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ original_url: originalURL }),
});
const data = await response.json();
document.getElementById('short-url').innerText = `Short URL: ${window.location.origin}/${data.short_url}`;
}
</script>
</head>
<body>
<h1>URL Shortener</h1>
<input type="text" id="original-url" placeholder="Enter original URL">
<button onclick="shortenURL()">Shorten</button>
<p id="short-url"></p>
</body>
</html>

5. Развертывание

  • Локально: Запустите Flask приложение командой python app.py.
  • Облако: Используйте платформы как Heroku, AWS, или другие для развертывания.

6. Тестирование и улучшения

  • Добавьте проверку входных данных.
  • Обеспечьте безопасность (например, проверку подлинности).
  • Добавьте пользовательский интерфейс для просмотра статистики использования ссылок.

Вот и все! С таким планом ты сможешь создать свой сервис для укорачивания ссылок.