Skip to content
/ smol Public

URL redirection service. Built to exploit a bug in GroupMe my friends and I discovered late 2024.

Notifications You must be signed in to change notification settings

r-bakes/smol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smol

Introduction

Smol is a URL shortening service like tinyURL.

A URL Shortener Service is a tool designed to convert long URLs into shorter, more manageable links. These shortened links redirect users to the original web addresses.

Q: Why make a URL Shortening Service?

A: Early 2024 my friends and I discovered a bug (feature?) in groupMe. If you make your name a link then content preview is activated whenever someone trys to "@" you.

There is a size limit for profile names however, so many of my friends and my favorite links would not work. To get around this limitation, I developed a tinyURL service to create a small enough URL such that it could be my profile name on GroupMe. The application is an API hosted on GCP cloud run built using FastAPI that sends a 302 redirect if the id of the url matches a record in a NoSQL database (Firestore).

Key Features

  • URL Shortening: Convert a standard URL into a brief, unique link.

  • Redirection: Use the shortened link to redirect users to the intended original URL.

GroupMe Defect Write Up & Solution Evidence

Example. The name in GroupMe is the URL to Rick Astley’s “Never Gonna Give You Up”. Trying to @ him results in the Youtube URL Content preview.

Example @

I wanted to make it so that whenever someone trys to @ me a gif hosted on giphy.com would show up. However the URL was too long for GroupMe to allow it.

Unable to Upload

The solution was to make a simple URL shortener and it worked!

Solution

Technical Stack

Features:

  • Python
  • FastAPI - API Implementation

Backend:

Deployment:

  • Docker
  • GCP Artifact Registry - Docker Image Store for Cloud Run deployment

Development Setup

Follow these steps to set up your local development environment:

  1. Clone the repository using:

    git clone <repository-url>

  2. Install the required packages by running:

    pip install -r requirements.txt

  3. Launch the service with:

    uvicorn main:app --reload

Your local server should now be accessible at http://localhost:8000.

About

URL redirection service. Built to exploit a bug in GroupMe my friends and I discovered late 2024.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published