A Go implementation of noisy - Making your web traffic less valuable, one request at a time π‘οΈ
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.
- π 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
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
# π» 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
# π₯ 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
The Docker image is available for multiple platforms:
- π» linux/amd64 (x86_64)
- π linux/arm64 (Apple Silicon)
- π± linux/arm/v7 (32-bit ARM)
# ποΈ Build the Docker image
docker build -t urusai .
# π Run your locally built container
docker run urusai
# Run with built-in default configuration
./urusai
# Run with custom configuration file
./urusai --config config.json
# Show help
./urusai --help
--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)
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"
]
}
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
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
# π οΈ 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
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.
# π¨ 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 ./...
This project is licensed under the MIT License - see the LICENSE file for details. βοΈ