{"id":13668264,"url":"https://github.com/bradleyjkemp/grpc-tools","last_synced_at":"2025-04-07T23:12:16.760Z","repository":{"id":37412517,"uuid":"181333150","full_name":"bradleyjkemp/grpc-tools","owner":"bradleyjkemp","description":"A suite of gRPC debugging tools. Like Fiddler/Charles but for gRPC.","archived":false,"fork":false,"pushed_at":"2023-11-14T10:42:44.000Z","size":240,"stargazers_count":1227,"open_issues_count":39,"forks_count":76,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-03-31T22:23:26.919Z","etag":null,"topics":["debugging-tool","grpc","interceptor","middleware","proxy","tls"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bradleyjkemp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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}},"created_at":"2019-04-14T15:56:05.000Z","updated_at":"2025-03-31T18:12:17.000Z","dependencies_parsed_at":"2024-01-07T18:07:04.202Z","dependency_job_id":null,"html_url":"https://github.com/bradleyjkemp/grpc-tools","commit_stats":{"total_commits":130,"total_committers":6,"mean_commits":"21.666666666666668","dds":0.4769230769230769,"last_synced_commit":"10af1dca2fe77d86fb3af07bf19e4b39786c2d7e"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradleyjkemp%2Fgrpc-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradleyjkemp%2Fgrpc-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradleyjkemp%2Fgrpc-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradleyjkemp%2Fgrpc-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bradleyjkemp","download_url":"https://codeload.github.com/bradleyjkemp/grpc-tools/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247744335,"owners_count":20988783,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["debugging-tool","grpc","interceptor","middleware","proxy","tls"],"created_at":"2024-08-02T08:00:28.336Z","updated_at":"2025-04-07T23:12:16.723Z","avatar_url":"https://github.com/bradleyjkemp.png","language":"Go","funding_links":[],"categories":["Misc","Tools","HTTP/HTTPS/gRPC","Network","Go","Http/Https/Grpc Dev\u0026Ops工具与服务"],"sub_categories":["Testing","gRPC Tools","Benchmarks"],"readme":"# grpc-tools [![CircleCI](https://circleci.com/gh/bradleyjkemp/grpc-tools/tree/master.svg?style=svg)](https://circleci.com/gh/bradleyjkemp/grpc-tools/tree/master) [![GitHub release](https://img.shields.io/github/release/bradleyjkemp/grpc-tools.svg)](https://github.com/bradleyjkemp/grpc-tools/releases/latest)\n\nA suite of tools for gRPC debugging and development. Like [Fiddler](https://www.telerik.com/fiddler)/[Charles](https://www.charlesproxy.com/) but for gRPC!\n\nThe main tool is `grpc-dump` which transparently intercepts network traffic and logs all gRPC and gRPC-Web requests with full metadata as a JSON [stream](grpc-dump/README.md#JSON-stream-output). This stream is easily readable as it is or you can use tools like [`jq`](https://stedolan.github.io/jq/) for more complex visualisation.\n\n![demo](demo.svg \"Simple grpc-dump demo\")\n\nThis repository currently includes:\n* [`grpc-dump`](#grpc-dump): a small gRPC proxy that dumps RPC details to a file for debugging, and later analysis/replay.\n* [`grpc-replay`](grpc-replay): takes the output from `grpc-dump` and replays requests to the server.\n* [`grpc-fixture`](#grpc-fixture): a proxy that takes the output from `grpc-dump` and replays saved responses to client requests.\n* [`grpc-proxy`](grpc-proxy): a library for writing gRPC intercepting proxies. `grpc-dump` and `grpc-fixture` are both built on top of this library.\n\nThese tools are in alpha so expect breaking changes between releases. See the [changelog](CHANGELOG.md) for full details.\n\n### Installation:\nThe recommended way to install these tools is via [Homebrew](https://brew.sh/) using:\n```bash\nbrew install bradleyjkemp/formulae/grpc-tools\n```\n\nAlternatively, binaries can be downloaded from the GitHub [releases page](https://github.com/bradleyjkemp/grpc-tools/releases/latest).\n\nOr you can build the tools from source using:\n```bash\ngo install github.com/bradleyjkemp/grpc-tools/...\n```\n\n## grpc-dump\n\n`grpc-dump` lets you see all of the gRPC requests being made by applications on your machine without any code changes required to applications or servers.\n\nSimply start `grpc-dump` and configure your system/application to use it as a HTTP(S) proxy. You'll soon see requests logged in full as a JSON stream with service and method names.\n\nEven if you don't have the original `.proto` files, `grpc-dump` will attempt to deserialise messages heuristically to give a human readable form.\n```bash\n# start the proxy (leave out the --port flag to automatically pick on)\ngrpc-dump --port=12345\n\n# in another terminal, run your application pointing it at the proxy\n# Warning: if your application connects to a localhost/127.0.0.1 address then proxy settings\n# are usually ignored. To fix this you can use a service like https://readme.localtest.me\nhttp_proxy=http://localhost:12345 my-app\n\n# all the requests made by the application will be logged to standard output in the grpc-dump window e.g.\n# {\"service\": \"echo\", \"method\": \"Hi\", \"messages\": [\".....\"] }\n# JSON will be logged to STDOUT and any info or warning messages will be logged to STDERR\n```\n\nMany applications expect to talk to a gRPC server over TLS. For this you need to use the `--key` and `--cert` flags to point `grpc-dump` to certificates valid for the domains your application connects to.\n\nThe recommended way to generate these files is via the excellent [`mkcert`](https://github.com/FiloSottile/mkcert) tool. `grpc-dump` will automatically use any `mkcert` generated certificates in the current directory.\n```bash\n# Configure your system to trust mkcert certificates\nmkcert -install\n\n# Generate certificates for domains you want to intercept connections to\nmkcert mydomain.com *.mydomain.com\n\n# Start grpc-dump using the key and certificate created by mkcert\n# Or start grpc-dump from the same directory and it will\n# detect them automatically\ngrpc-dump --key=mydomain.com-key.pem --cert=mydomain.com.pem\n```\n\nMore details for using `grpc-dump` (including the specification for the JSON output) can be found [here](grpc-dump/README.md).\n\n## grpc-fixture\n\n```bash\n# save the (stdout) output of grpc-dump to a file\ngrpc-dump --port=12345 \u003e my-app.dump\n\n# in another, run your application pointing it at the proxy\nhttp_proxy=http://localhost:12345 my-app\n\n# now run grpc-fixture from the previously saved output\ngrpc-fixture --port=12345 --dump=my-app.dump\n\n# when running the application again, all requests will\n# be intercepted and answered with saved responses,\n# no requests will be made to the real gRPC server.\nhttp_proxy=http://localhost:12345 my-app\n```\n\nFor applications that expect a TLS server, the same `--key` and `--cert` flags can be used as described above for `grpc-dump`.\n\nMore details for using `grpc-fixture` can be found [here](grpc-fixture/README.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradleyjkemp%2Fgrpc-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbradleyjkemp%2Fgrpc-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradleyjkemp%2Fgrpc-tools/lists"}