๐ urusai - Awesome Go Library for Security

Urusai ("noisy" in Japanese) is a Go implementation of a random HTTP/DNS traffic noise generator that helps protect privacy by creating digital smokescreens while browsing
Detailed Description of urusai
๐ Urusai
ใใใใ - Your Privacy Shield in the Digital Noise
A Go implementation of noisy - Making your web traffic less valuable, one request at a time ๐ก๏ธ
๐ What is Urusai?
Urusai (Japanese for 'noisy') is your digital privacy companion that generates random HTTP/DNS traffic noise in the background while you browse the web. By creating this digital smokescreen, it helps make your actual web traffic data less valuable for tracking and selling.
โจ Features
- ๐ Generates random HTTP/DNS traffic by crawling websites
- โ๏ธ Configurable via JSON configuration file
- ๐ญ Customizable user agents, root URLs, and blacklisted URLs
- โฑ๏ธ Adjustable crawling depth and sleep intervals
- โฐ Optional timeout setting
๐ฅ Installation
Arch Linux (AUR)
yay -S urusai
Void Linux
sudo xbps-install -S urusai
๐ฆ Using Pre-built Binaries
The easiest way to get started is to download a pre-built binary from the releases page ๐
-
Download the appropriate binary for your platform:
- ๐
urusai-macos-amd64- for macOS Intel systems - ๐
urusai-macos-arm64- for macOS Apple Silicon systems - ๐ง
urusai-linux-amd64- for Linux x86_64 systems - ๐ช
urusai-windows-amd64.exe- for Windows x86_64 systems
- ๐
-
Make the binary executable (Unix-based systems only):
chmod +x urusai-* -
๐ Run the binary:
# ๐ On macOS (Intel) ./urusai-macos-amd64 # ๐ On macOS (Apple Silicon) ./urusai-macos-arm64 # ๐ง On Linux ./urusai-linux-amd64 # ๐ช On Windows (using Command Prompt) urusai-windows-amd64.exe
๐ ๏ธ Building from Source
# ๐ป Clone the repository
git clone https://github.com/calpa/urusai.git
# ๐ Navigate to the project directory
cd urusai
# ๐ฟ Build the project
go build -o urusai
๐ณ Using Docker
๐ Pull from Docker Hub
# ๐ฅ Pull the latest image
docker pull calpa/urusai:latest
# ๐ Run the container with default configuration
docker run calpa/urusai
# โ๏ธ Run with custom configuration (mount your config file)
docker run -v $(pwd)/config.json:/app/config.json calpa/urusai --config config.json
The Docker image is available for multiple platforms:
- ๐ป linux/amd64 (x86_64)
- ๐ linux/arm64 (Apple Silicon)
- ๐ฑ linux/arm/v7 (32-bit ARM)
๐ป Build Locally
# ๐๏ธ Build the Docker image
docker build -t urusai .
# ๐ Run your locally built container
docker run urusai
Usage
# Run with built-in default configuration
./urusai
# Run with custom configuration file
./urusai --config config.json
# Show help
./urusai --help
Command Line Arguments
--config: Path to the configuration file (optional, uses built-in default configuration if not specified)--log: Logging level (default: "info")--timeout: For how long the crawler should be running, in seconds (optional, 0 means no timeout)
โ๏ธ Configuration
Urusai comes with a built-in default configuration, but you can also provide your own custom configuration file. The configuration is in JSON format with the following structure:
{
"max_depth": 25, // ๐ณ๏ธ Maximum crawling depth
"min_sleep": 3, // ๐ค Minimum sleep between requests (seconds)
"max_sleep": 6, // โณ Maximum sleep between requests (seconds)
"timeout": 0, // โฐ Crawler timeout (0 = no timeout)
"root_urls": [ // ๐ Starting points for crawling
"https://www.wikipedia.org",
"https://www.github.com"
],
"blacklisted_urls": [ // โ URLs to skip
".css",
".ico",
".xml"
],
"user_agents": [ // ๐จโ๐ป Browser identities
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
]
}
๐จโ๐ป For Developers
๐ ๏ธ Development
Urusai is developed using standard Go practices. Here are some commands that will help you during development:
# ๐ป Run the project directly without building
go run main.go
# ๐ Run with a specific log level
go run main.go --log debug
# โ๏ธ Run with a custom configuration file
go run main.go --config config.json
# โฐ Run with a timeout (in seconds)
go run main.go --timeout 300
๐งช Testing
Urusai includes comprehensive test coverage for all packages. The tests verify configuration loading, command-line flag parsing, and crawler functionality.
# ๐ฃ Run all tests
go test ./...
# ๐ Run tests with verbose output
go test -v ./...
# ๐ Run tests with coverage
go test -cover ./...
# ๐ Generate a coverage report
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out
Test files include:
- ๐
main_test.go: Tests for command-line parsing, configuration loading, and signal handling - ๐
config/config_test.go: Tests for configuration loading and validation
๐๏ธ Building
# ๐ ๏ธ Build for the current platform
go build -o urusai
# ๐ป Build for a specific platform (e.g., Linux)
GOOS=linux GOARCH=amd64 go build -o urusai-linux-amd64
# ๐ Build for multiple platforms
GOOS=darwin GOARCH=amd64 go build -o urusai-macos-amd64
GOOS=windows GOARCH=amd64 go build -o urusai-windows-amd64.exe
โญ Star History
๐ Releases
Urusai uses GitHub Actions for automated releases. When a new tag with format v* (e.g., v1.0.0) is pushed to the repository, GitHub Actions will automatically:
- ๐งช Run tests to ensure code quality
- ๐จ Build binaries for all supported platforms (macOS Intel/ARM, Linux, Windows)
- ๐ฆ Create compressed archives of the binaries
- ๐ Create a new GitHub release with the binaries attached
To create a new release:
# ๐ท๏ธ Tag the commit
git tag v1.0.0
# ๐ Push the tag to GitHub
git push origin v1.0.0
The GitHub Actions workflow will handle the rest automatically.
๐ Code Quality
# ๐จ Format code
go fmt ./...
# ๐ Vet code for potential issues
go vet ./...
# โจ Run linter (requires golint)
go install golang.org/x/lint/golint@latest
golint ./...
# ๐ฌ Run static analysis (requires staticcheck)
go install honnef.co/go/tools/cmd/staticcheck@latest
staticcheck ./...
๐ License
This project is licensed under the MIT License - see the LICENSE file for details. โ๏ธ