A simple HTTP URL testing service built with Go. Quickly debug why URLs fail - check if you're blocked, rate-limited, or hitting other issues.
With so many AI crawlers out there, websites often block requests. This tool helps you:
- Detect if your IP is blocked (403/429 responses)
- Check if redirects are causing issues
- See exact HTTP status and headers
- Measure response times
- Verify SSL/TLS errors
- Debug why your requests fail
- Check HTTP status code and response time
- View response headers and body preview
- Track redirects
- Detect blocked requests (403/429)
- See SSL/TLS errors
- Web UI included
- Go 1.21+
go mod download
go run main.goVisit http://localhost:8080
curl -X POST http://localhost:8080/api/test \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'make build # Compile
make run # Run locally
make test # Run tests
make test-coverage # Show coverage
make docker-build # Build Docker image
make docker-run # Run Docker locally# Pull the latest image
docker pull sammylin/url_checker:latest
# Run the container
docker run -p 8080:8080 sammylin/url_checker:latestdocker build -t url-checker .
docker run -p 8080:8080 url-checkerdocker run -p 9000:8080 -e PORT=8080 sammylin/url_checker:latestRequest:
{
"url": "https://example.com"
}Response (Success):
{
"success": true,
"statusCode": 200,
"responseTime": 234,
"finalUrl": "https://example.com/",
"headers": {
"Content-Type": "text/html",
"Server": "nginx"
},
"bodyPreview": "<!DOCTYPE html>...",
"truncated": false,
"blocked": false,
"userIP": "1.2.3.4",
"serverIP": "5.6.7.8"
}Response (Error):
{
"success": false,
"error": "DNS error: host not found",
"blocked": false,
"userIP": "1.2.3.4",
"serverIP": "5.6.7.8"
}Returns OK
PORT- Server port (default: 8080)
curl -X POST http://localhost:8080/api/test \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'Look for:
"statusCode": 403- Access forbidden"statusCode": 429- Rate limited"blocked": true- Detected as blocked
If a URL redirects, you'll see:
{
"finalUrl": "https://example.com/redirected",
"statusCode": 200
}Some sites redirect blocked requests to a login page. Check the finalUrl to see where you ended up.
If there's an SSL error:
{
"error": "x509: certificate signed by unknown authority"
}This means the certificate chain is broken or self-signed.
Headers tell you a lot:
Server: cloudflare- Behind Cloudflare (may have stricter rules)X-Frame-Options: DENY- Can't iframe thisRetry-After: 3600- Rate limited, retry in 1 hour
403 Forbidden
- Your IP is blocked
- User-Agent is blocked
- Missing required headers
429 Too Many Requests
- Rate limited
- Too many requests from your IP
- Need to add delays between requests
Connection Timeout
- Server is down
- Firewall blocking
- Network issue
SSL Certificate Error
- Self-signed certificate
- Expired certificate
- Wrong domain
# Run tests
go test ./...
# Format code
gofmt -w main.go
# Check coverage
go test -cover ./...MIT
