{"id":51372649,"url":"https://github.com/wlanboy/burll","last_synced_at":"2026-07-03T08:04:40.384Z","repository":{"id":366301812,"uuid":"1275787512","full_name":"wlanboy/burll","owner":"wlanboy","description":"bash based curl light","archived":false,"fork":false,"pushed_at":"2026-06-21T06:34:59.000Z","size":12,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-21T08:16:39.563Z","etag":null,"topics":["bash","curl","mirror"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wlanboy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-21T06:11:07.000Z","updated_at":"2026-06-21T06:35:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/wlanboy/burll","commit_stats":null,"previous_names":["wlanboy/burll"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/wlanboy/burll","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wlanboy%2Fburll","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wlanboy%2Fburll/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wlanboy%2Fburll/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wlanboy%2Fburll/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wlanboy","download_url":"https://codeload.github.com/wlanboy/burll/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wlanboy%2Fburll/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35077515,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-03T02:00:05.635Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","curl","mirror"],"created_at":"2026-07-03T08:04:39.635Z","updated_at":"2026-07-03T08:04:40.366Z","avatar_url":"https://github.com/wlanboy.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# burll\n\nA curl-like HTTP client implemented in pure bash using `/dev/tcp` — no curl, no wget, no external tools required for plain HTTP.\n\n## Usage\n\n```bash\nsource burll.sh\nburl [OPTIONS] URL\n```\n\n## Options\n\n| Flag | curl equivalent | Description |\n|------|----------------|-------------|\n| `-v` | `--verbose` | Show request and response status on stderr |\n| `-k` | `--insecure` | Skip TLS certificate verification (HTTPS only) |\n| `-i` | `--include` | Include response headers in output |\n| `-X METHOD` | `--request` | HTTP method (GET, POST, PUT, PATCH, DELETE, HEAD) |\n| `-H 'K: V'` | `--header` | Add a request header (repeatable) |\n| `-d BODY` | `--data` | Request body |\n| `-o FILE` | `--output` | Write response body to file instead of stdout |\n\n## Examples\n\n```bash\n# Source once per shell session (or add to .bashrc)\nsource /path/to/burll.sh\n\n# Simple GET\nburl http://localhost:8080/actuator/health\n\n# Verbose GET with headers in output\nburl -v -i -X GET http://localhost:8080/actuator/health\n\n# POST with JSON body\nburl -X POST \\\n     -H 'Content-Type: application/json' \\\n     -d '{\"status\":\"UP\"}' \\\n     http://localhost:8080/api/resource\n\n# Multiple custom headers\nburl -H 'Authorization: Bearer mytoken' \\\n     -H 'Accept: application/json' \\\n     http://localhost:8080/api/protected\n\n# Save response to file\nburl -o health.json http://localhost:8080/actuator/health\n\n# HTTPS (requires openssl in PATH)\nburl -k https://api.example.com/health\n```\n\n## How it works\n\nPlain HTTP connections are opened directly via bash's built-in `/dev/tcp/host/port` pseudo-device — no subprocess, no external binary:\n\n```bash\nexec 3\u003c\u003e/dev/tcp/localhost/8080\nprintf 'GET / HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' \u003e\u00263\ncat \u003c\u00263\nexec 3\u003e\u0026-\n```\n\nFor HTTPS, `openssl s_client` is used as the TLS layer.\n\n## Requirements\n\n- bash 4.0+ (built with `--enable-net-redirections`, which is the default on all major Linux distributions)\n- `openssl` — only required for HTTPS requests\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwlanboy%2Fburll","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwlanboy%2Fburll","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwlanboy%2Fburll/lists"}