Um localizador uniforme de recursos, mais conhecido como URL, é o endereço de conteúdos na Internet. As URLs normalmente incluem o endereço de uma página web, seguido por uma extensa sequência de caracteres que parecem aleatórios. Esses caracteres podem ser desagradáveis e difíceis de memorizar. Por sorte, existem ferramentas conhecidas como encurtadores de URL que ajudam a simplificá-los.

Encurtar uma URL tem vários benefícios, inclusive tornar o endereço mais fácil de compartilhar e menos provável de ser digitado incorretamente pelos usuários. Até mesmo um caractere ausente em uma URL pode torná-lo completamente inútil, direcionando os usuários para a página errada ou para um recurso que nem mesmo existe.

Veja o exemplo de https://example.com/blog-url-shorteners/48bfefiahl9adik abreviado para https://example.com/url-shorteners. Não é difícil ver qual deles um usuário estaria mais propenso a compartilhar ou qual teria maior probabilidade de cometer erros durante a digitação.

Os benefícios de um encurtador de URL vão além da organização de URLs longos. Eles também podem ajudar com o seguinte:

  • Melhorar a classificação nos mecanismos de pesquisa: Todos os criadores de conteúdo, empresas e start-ups têm conteúdo em seus sites, blogs ou mídias sociais. Os mecanismos de pesquisa preferem links com palavras-chave específicas para que possam ser classificados de acordo e gerar bons resultados. Uma URL curta gerada a partir de uma plataforma conhecida pode ajudar a melhorar o ranking da sua URL.
  • Acompanhar o tráfego em seus links: Serviços pagos de encurtamento de URL, como o Bitly, ajudam a rastrear os usuários que clicam em seus links para que você possa analisar o tráfego de entrada e personalizar seu conteúdo de acordo.

Duas abordagens para um encurtador de URL: Uma biblioteca Python e uma API

Seguindo as instruções deste tutorial, você criará um aplicativo web de encurtador de URL com Python usando dois métodos diferentes:

O módulo pyshorteners é utilizado por desenvolvedores para gerar URLs curtas, enquanto o módulo da API Bitly gera URLs curtas e oferece funções mais robustas, como contagem de cliques por URL, localizações de URLs clicadas, personalização de URLs e muito mais.

Para concluir o tutorial, você precisará de um conhecimento básico de Python, e o Python deve estar instalado em seu sistema.

Configuração do ambiente do projeto

Antes de criar seu aplicativo web de encurtamento de URL, você precisa configurar o ambiente para o projeto, incluindo a instalação do Flask, um framework leve que facilita o desenvolvimento de aplicativos web em Python.

Comece com estas etapas:

  • Crie uma pasta de projeto, talvez com um nome como url-shortener.
  • Crie um arquivo vazio chamado main.py dentro dessa pasta.
  • Crie um ambiente virtual para esse projeto de modo que qualquer instalação de bibliotecas Python permaneça independente de seu sistema. Use o comando python -m venv myenv em seu terminal para criar esse ambiente. (Nesse caso, os arquivos de ambiente serão colocados no diretório myenv.)
  • Ative o ambiente virtual usando o comando correspondente para o seu sistema operacional (e onde <myenv> é o nome do diretório que você criou na etapa anterior).
    • Windows: <myenv>Scriptsactivate.bat
    • Linux/macOS: source <myenv>/bin/activate
  • Instale o Flask usando o comando pip install flask.
  • Crie uma pasta chamada templates na pasta do projeto. (O Flask recuperará os templates HTML desse diretório)

O trabalho que você fez no terminal até agora será parecido com o seguinte:

O projeto Python até o momento em um terminal do macOS.
O projeto Python até o momento em um terminal do macOS.

Usando a biblioteca pyshorteners para criar um aplicativo web de encurtamento de URL

Com o ambiente do projeto configurado, agora você criará seu primeiro encurtador de URL usando a biblioteca pyshorteners.

Instale a biblioteca pyshorteners com o seguinte comando:

pip install pyshorteners

Criação de uma interface de usuário básica para o aplicativo web

Em seguida, você criará um formulário básico em HTML com etiquetas e campos de entrada, onde você insere uma URL longa e gera uma mais curta.

Crie um arquivo form.html na pasta templates, depois insira o seguinte código nesse arquivo e salve-o:

<html lang="en">
<head>
  <title>URL Shortener</title>
</head>
<body>
  <h1>URL Shortener</h1>
  <form method="post" action="/">
    <label for="url">Enter an https:// URL:</label>
    <input type="url"
      name="url"
      id="url"
      placeholder="https://www.xyz.com"
      pattern="https://.*" size="50"
        value="{{old_url}}"
      required  
    >
    <button type="submit" value="submit">Submit</button>
    <br>
    <label>Generated URL: </label>
    <input name="generated_url" value="{{new_url}}" style="margin-top: 10px; margin-left:35px" size="50"></input>
  </form>
</body>
</html>

O código acima cria um formulário com duas etiquetas, dois campos de entrada e um botão.

O primeiro campo de entrada, chamado url, serve para você escrever a URL longa e o outro campo serve para gerar a URL curta.

O campo de entrada url tem os seguintes atributos:

  • name: Para identificar o elemento (por exemplo, URL)
  • placeholder: Para mostrar um exemplo de URL
  • pattern: Para especificar o padrão de uma URL, que é https://.*
  • required: Para fornecer uma entrada de URL antes do envio
  • value: Para exibir a URL antiga

O segundo campo de entrada tem um atributo value definido como new_url. O new_url é uma URL curta gerada pela biblioteca pyshorteners do arquivo main.py (mostrado na próxima seção).

O formulário de entrada é mostrado na seguinte captura de tela:

Um formulário web para o encurtador de URL.
Um formulário web para o encurtador de URL.

Código de encurtamento de URL usando pyshorteners

Agora que você criou o formulário, pode adicionar algumas funcionalidades a ele usando Python e pyshorteners.

Você adicionará código para processar a URL longa em uma URL curta e executar o aplicativo web. Navegue até o arquivo main.py que você criou anteriormente, digite o seguinte código e salve-o:

from flask import Flask, render_template, request
import pyshorteners
app = Flask(__name__)
 
@app.route("/", methods=['POST', 'GET'])
def home():
  if request.method=="POST":
    url_received = request.form["url"]
    short_url = pyshorteners.Shortener().tinyurl.short(url_received)
    return render_template("form.html", new_url=short_url, old_url=url_received)
  else:
    return render_template('form.html')
 
if __name__ == "__main__":
 app.run() 

O código acima importa a biblioteca pyshorteners e os seguintes módulos da estrutura do Flask, todos os quais você precisará para encurtar URLs:

  • Flask: A própria estrutura do Flask, que foi apresentada anteriormente.
  • render_template: Um pacote de renderização de templates usado para gerar a saída de arquivos HTML da pasta templates.
  • request: Um objeto da estrutura do Flask que contém todos os dados que um usuário envia do frontend para o backend como parte de uma solicitação HTTP.

Em seguida, ele cria uma função chamada home() que recebe uma URL enviada no formulário e gera uma URL curta. O decorador app.route() é usado para vincular a função à rota de URL específica para a execução do aplicativo, e os métodos POST/GET manipulam as solicitações.

Na função home(), há uma instrução condicional if-else.

Para a instrução if, se request.method=="POST", uma variável chamada url_received é definida como request.form["url"], que é a URL submetida no formulário. Aqui, url é o nome do campo de entrada definido no formulário HTML criado anteriormente.

Em seguida, uma variável chamada short_url é definida como pyshorteners.Shortener().tinyurl.short(url_received).
Aqui, são usados dois métodos da biblioteca pyshorteners: .Shortener() e .short(). A função .Shortener() cria uma instância da classe pyshorteners e a função .short() recebe a URL como argumento e o encurta.

A função short(), tinyurl.short(), é uma das muitas APIs da biblioteca pyshorteners. osdb.short() é outra API que também pode ser usada para a mesma finalidade.

A função render_template() é usada para renderizar o template do arquivo HTML form.html e enviar URLs de volta ao formulário por meio de argumentos. O argumento new_url é definido como short_url e old_url é definido como url_received. O escopo da instrução if termina aqui.

Para a instrução else, se o método de solicitação for diferente de POST, somente o template HTML form.html será renderizado.

Demonstração do aplicativo web de encurtador de URL criado com a biblioteca pyshorteners

Para demonstrar o aplicativo encurtador de URL da pyshorteners, navegue até a rota padrão do aplicativo, http://127.0.0.1:5000/, depois de executar o aplicativo.

Cole um link de sua escolha no primeiro campo do formulário web:

Testando o encurtador de URL usando a biblioteca pyshorteners.
Testando o encurtador de URL usando a biblioteca pyshorteners.

Clique no botão Submit para gerar uma URL curta com tinyurl como o domínio no campo Generated URL:

Resultado do encurtamento de URL usando a biblioteca pyshorteners.
Resultado do encurtamento de URL usando a biblioteca pyshorteners.

Utilizando a API Bitly para criar um aplicativo web de encurtador de URL

Nesta seção, você desenvolverá um aplicativo de encurtamento de URL usando a API Bitly. Conforme mencionado, o módulo da API Bitly é outro método para encurtar URLs e também fornece análises detalhadas sobre cliques, local e tipo de dispositivo usado (como desktop ou celular).

Instale a API Bitly usando o seguinte comando:

pip install bitly-api-py3

Você precisa de um token de acesso para usar a API Bitly, que pode ser obtido inscrevendo-se na Bitly.

Depois de concluir o processo de registro, faça login na Bitly para visualizar seu painel de controle:

Captura de tela do painel de controle do Bitly.

Clique em Settings na barra lateral esquerda e, em seguida, clique na seção API encontrada em Developer settings.

Gere um token de acesso inserindo sua senha no campo acima do botão Generate token, conforme mostrado na imagem abaixo, e guarde o token para usá-lo no código do seu aplicativo:

Gerando um token de acesso para a API Bitly.
Gerando um token de acesso para a API Bitly.

Código de encurtamento de URL usando a API Bitly

Agora que você tem o token da Bitly, pode codificar o aplicativo web para encurtar a URL usando a API Bitly.

Você usará o mesmo formulário que criou para a seção pyshorteners, mas com algumas alterações no arquivo main.py:

from flask import Flask, render_template, request
import bitly_api
app = Flask(__name__)
 
bitly_access_token = "37b1xxxxxxxxxxxxxxxxxxxxxxxxxx"
 
@app.route("/", methods=['POST', 'GET'])
def home():
  if request.method=="POST":
    url_received = request.form["url"]
    bitly = bitly_api.Connection(access_token=bitly_access_token)
    short_url = bitly.shorten(url_received)
    return render_template("form.html", new_url=short_url.get('url'), old_url=url_received)
  else:
    return render_template('form.html')
 
if __name__ == "__main__":
 app.run() 

Como você pode ver no código acima, bitly_api é importado usando import bitly_api. O token de acesso é então salvo em uma variável chamada bity_access_token, como em bitly_access_token = "37b1xxxxxxxxxxxxxxxxxxxxxxxx".

A função home() encurta a URL e contém uma instrução condicional if-else.

Para a instrução if, se o método ou a solicitação for POST, a URL enviado no formulário será definido como a variável url_received.

A função bitly_api.Connection(access_token=bitly_access_token) conecta-se à API Bitly e passa a ela o token de acesso que você salvou anteriormente como um argumento.

Para encurtar a URL, a função bitly.shorten() é usada passando a variável url_received como argumento e salvando em uma variável chamada short_url.

Por fim, o formulário criado é renderizado, e as URLs são enviadas de volta para serem exibidas no formulário usando a função render_template(). A instrução if é concluída aqui.

Para a instrução else, o formulário é renderizado usando a função render_template().

Demonstração do aplicativo web de encurtador de URL criado com a API Bitly

Para demonstrar o aplicativo encurtador de URL da API Bitly, navegue até a rota padrão do aplicativo, http://127.0.0.1:5000/, depois de executar o aplicativo.

Cole um link de sua escolha no primeiro campo do formulário web:

Testando o encurtador de URL usando a API Bitly.
Testando o encurtador de URL usando a API Bitly.

Clique em Submit para gerar uma URL curta com bit.ly como o domínio no segundo campo do aplicativo web:

Resultado do encurtamento de URL usando a API Bitly.
Resultado do encurtamento de URL usando a API Bitly.

Usar a API Bitly para encurtar URLs em seu aplicativo Python é simples assim.

Resumo

Encurtadores de URL fornecem URLs curtas que são fáceis de compartilhar, têm uma aparência mais limpa e ocupam menos espaço. Neste artigo, você aprendeu sobre encurtadores de URL e seus benefícios, bem como criar um aplicativo web de encurtador de URL com Python usando a pyshorteners e a API Bitly. A biblioteca pyshorteners fornece URLs curtas, enquanto a API Bitly oferece análises detalhadas, além de URLs curtas.

Como você já criou um aplicativo incrível, por que não levá-lo para o próximo nível e hospedá-lo no serviço de hospedagem de aplicativos web da Kinsta? Para ajudá-lo a colocar um aplicativo Python como este em funcionamento em nossa plataforma, explore nosso tutorial rápido de início com Flask.

Adarsh Chimnani

Adarsh is a web developer (MERN stack), passionate about game-level designing (Unity3D), and an anime enthusiast. He enjoys absorbing knowledge just out of curiosity, implementing what he has learned in the real world, and sharing that knowledge with others.