|
|
||
|---|---|---|
| css | ||
| images | ||
| js | ||
| .gitignore | ||
| Dockerfile | ||
| LICENSE | ||
| README.md | ||
| docker-compose.yml | ||
| example.html | ||
| humans.txt | ||
| index.html | ||
| requirements.txt | ||
| server.py | ||
README.md
Machine Unlimited - Mobile Cheese POC
A mobile-optimized browsing interface for machine.unlimited.pizza with an interactive "cheese dragging" system.
Features
- 🧀 Tap links to create cheese emojis
- 🖱️ Drag cheese to the machine
- 🔪 Sausage appears in the grater
- ⚙️ Click sausage to navigate + animated grinding
- 🎬 Levers and grater animate during navigation
- 🔒 Security: SSRF protection, localhost blocking
Quick Start
Requirements
- Python 3.7+
- An initial webpage URL
Installation
git clone https://gitea.jpt.land/jpt/machine-unlimited-mobile.git
cd machine-unlimited-mobile
Running
python3 server.py
Server runs on http://localhost:9001
Open in browser:
http://localhost:9001/?url=https://en.wikipedia.org/wiki/Cheese_grater
Via ngrok (for sharing)
# In another terminal
ngrok http 9001
# Share the ngrok URL with friends
# https://your-ngrok-url.ngrok-free.app/?url=https://example.com
How It Works
Mobile Flow
- Cheese Creation - Tap any link on the page → 🧀 emoji appears
- Dragging - Touch and drag the cheese across the screen
- Grater Drop - Release over the grater area → sausage button appears
- Navigation - Tap the sausage → grater animates → new page loads
Architecture
-
server.py - Proxy server that:
- Fetches external URLs
- Injects click handlers for link detection
- Returns HTML with base tag for relative URLs
- Security checks (blocks localhost, file://, etc.)
-
js/machine.js - Enhanced with:
- Mobile cheese dragging system
- Message listener for link taps from iframe
- Sausage creation and animations
- Lever/wheel movement during grinding
Security
- ✅ No SSRF attacks (localhost/private IPs blocked)
- ✅ Only http/https protocols allowed
- ✅ 30s timeout per request
- ✅ Max 1MB response size
- ✅ All URLs URL-encoded in iframe src
Technology
- Original: machine.unlimited.pizza
- Server: Python 3 SimpleHTTPServer
- Frontend: Vanilla JavaScript with CSS animations
Mobile vs Desktop
- Mobile: Uses the new cheese dragging interface
- Desktop: Use the original machine.unlimited.pizza for the traditional wheel/lever experience