gitwtfhub

wtf is scrape-block?

bitilia/scrape-block — explained in plain English

Analysis updated 2026-05-18

0PythonAudience · developerComplexity · 2/5Setup · easy

TL;DR

A tool that builds a custom scrambled font so email addresses look normal to visitors but appear as gibberish to web scrapers reading the page source.

Mindmap

mindmap
  root((scrape-block))
    What it does
      Scrambles font cmap
      Hides real text
      Reversible encoding
    Tech stack
      Python
      TTF and WOFF2 fonts
    Use cases
      Protect email addresses
      Per user unique key
      Encode decode CLI
    Audience
      Web developers
      Site owners

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Hide an email address on a public webpage from automated scraping bots

REASON 2

Generate a unique scrambled font and mapping for each site or user

REASON 3

Encode and decode protected text using a simple command line helper

REASON 4

Add a demo HTML snippet that shows the scrambled font working in a browser

What's in the stack?

Python

How it stacks up

bitilia/scrape-block0xallam/my-recipe0xhassaan/nn-from-scratch
Stars00
LanguagePythonPythonPython
Last pushed2022-11-22
MaintenanceDormant
Setup difficultyeasymoderatemoderate
Complexity2/52/54/5
Audiencedevelopergeneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · easy Time to first run · 5min

Requires picking or supplying a source font file and installing Python requirements first.

Wtf does this do

This tool hides text such as email addresses from web scrapers by building a custom font that scrambles what appears in the page source while still showing the correct text to a human reading the page in a browser. A font normally maps each character to the shape it draws. This tool breaks that link on purpose. It creates a random scramble where no character maps to itself, then uses it in two places. First, it rewrites your real text, such as an email address, into gibberish that goes into your HTML. Second, it rebuilds the font so that when the browser reads that gibberish, it draws the shapes of the real characters instead. The result is that a visitor sees the correct email address on screen, while anyone reading the raw HTML or scraping the page only sees nonsense characters. Because the scramble is reversible, the tool can also decode the gibberish back into the original text when needed. Each time you run the tool it creates a fresh random mapping, so every user or website gets its own unique key rather than sharing one pattern that scrapers could learn. Running it is simple: install the requirements and run a Python script, either picking a font file through a popup window or pointing it at one directly. It outputs the new font in two formats, a mapping file that records how to encode and decode text, a small command line helper for converting text, and a demo HTML page showing it in action. The README is honest about the limits. Copy-paste and screen readers will only get the scrambled version, not the real text, so this should only be used for values like email addresses where that tradeoff is acceptable, and accessibility labels should be added separately. It also notes that a scraper who specifically targets this trick could download the font and reverse it, so this defends against ordinary automated scraping rather than a determined attacker focused on one particular site.

Yoink these prompts

Prompt 1
Help me run scramble_font.py on my own font file to generate a scrambled version
Prompt 2
Show me how to encode my email address using encode.py and the generated mapping file
Prompt 3
Write the CSS @font-face rule needed to load the scrambled font on my website
Prompt 4
Explain the security tradeoffs of using a scrambled font to hide contact information

Frequently asked questions

wtf is scrape-block?

A tool that builds a custom scrambled font so email addresses look normal to visitors but appear as gibberish to web scrapers reading the page source.

What language is scrape-block written in?

Mainly Python. The stack also includes Python.

How hard is scrape-block to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is scrape-block for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.