calpa/urusai

By calpa

โ€ขUpdated about 1 month ago

Go implementation of noisy HTTP/DNS traffic generator

Image
Security
1

858

calpa/urusai repository overview

โ ๐Ÿ”Š Urusai

โ ใ†ใ‚‹ใ•ใ„ - Your Privacy Shield in the Digital Noise

Go Report Card License: MIT GitHub stars GitHub last commit

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

โ ๐Ÿ“ฆ Using Pre-built Binaries

The easiest way to get started is to download a pre-built binary from the releases pageโ  ๐Ÿš€

  1. 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
  2. Make the binary executable (Unix-based systems only):

    chmod +x urusai-*
    
  3. ๐Ÿš€ 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

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

Star History Chart

โ ๐Ÿš€ 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:

  1. ๐Ÿงช Run tests to ensure code quality
  2. ๐Ÿ”จ Build binaries for all supported platforms (macOS Intel/ARM, Linux, Windows)
  3. ๐Ÿ“ฆ Create compressed archives of the binaries
  4. ๐ŸŽ‰ 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. โš–๏ธ

Tag summary

Content type

Image

Digest

sha256:87e15ca48โ€ฆ

Size

8 MB

Last updated

about 1 month ago

docker pull calpa/urusai