{"id":13826052,"url":"https://github.com/mwitkow/go-http-dialer","last_synced_at":"2025-06-16T08:37:13.061Z","repository":{"id":57484549,"uuid":"59580548","full_name":"mwitkow/go-http-dialer","owner":"mwitkow","description":"Go net.Dialer for HTTP(S) CONNECT Tunneling.","archived":false,"fork":false,"pushed_at":"2024-07-01T18:34:49.000Z","size":21,"stargazers_count":80,"open_issues_count":2,"forks_count":18,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-25T23:06:04.772Z","etag":null,"topics":["connect","go","golang","grpc","http","proxy","tls","tunnel"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/mwitkow.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}},"created_at":"2016-05-24T14:30:50.000Z","updated_at":"2025-04-23T16:49:33.000Z","dependencies_parsed_at":"2024-11-06T00:28:51.910Z","dependency_job_id":"c3273c30-5ac9-4798-af58-7ba7698d0d06","html_url":"https://github.com/mwitkow/go-http-dialer","commit_stats":{"total_commits":11,"total_committers":1,"mean_commits":11.0,"dds":0.0,"last_synced_commit":"378f744fb2b81a6b96e3f40cde4f3bcab5a9cff0"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mwitkow/go-http-dialer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwitkow%2Fgo-http-dialer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwitkow%2Fgo-http-dialer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwitkow%2Fgo-http-dialer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwitkow%2Fgo-http-dialer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mwitkow","download_url":"https://codeload.github.com/mwitkow/go-http-dialer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mwitkow%2Fgo-http-dialer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260126837,"owners_count":22962698,"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":["connect","go","golang","grpc","http","proxy","tls","tunnel"],"created_at":"2024-08-04T09:01:31.456Z","updated_at":"2025-06-16T08:37:13.038Z","avatar_url":"https://github.com/mwitkow.png","language":"Go","funding_links":[],"categories":["\u003ca id=\"01e6651181d405ecdcd92a452989e7e0\"\u003e\u003c/a\u003e工具"],"sub_categories":["\u003ca id=\"9d6789f22a280f5bb6491d1353b02384\"\u003e\u003c/a\u003e隧道\u0026\u0026穿透"],"readme":"# HTTP CONNECT tunneling Go Dialer\n\n[![Travis Build](https://travis-ci.org/mwitkow/go-http-dialer.svg)](https://travis-ci.org/mwitkow/go-http-dialer)\n[![Go Report Card](https://goreportcard.com/badge/github.com/mwitkow/go-http-dialer)](http://goreportcard.com/report/mwitkow/go-http-dialer)\n[![GoDoc](http://img.shields.io/badge/GoDoc-Reference-blue.svg)](https://godoc.org/github.com/mwitkow/go-http-dialer)\n[![Apache 2.0 License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n\nA `net.Dialer` drop-in that establishes the TCP connection over an [HTTP CONNECT Tunnel](https://en.wikipedia.org/wiki/HTTP_tunnel#HTTP_CONNECT_tunneling).\n\n## Why?!\n\nSome enterprises have fairly restrictive networking environments. They typically operate [HTTP forward proxies](https://en.wikipedia.org/wiki/Proxy_server) that require user authentication. These proxies usually allow  HTTPS (TCP to `:443`) to pass through the proxy using the [`CONNECT`](https://tools.ietf.org/html/rfc2616#section-9.9) method. The `CONNECT` method is basically a HTTP-negotiated \"end-to-end\" TCP stream... which is exactly what [`net.Conn`](https://golang.org/pkg/net/#Conn) is :)\n\n## But, really, why?\n\nBecause if you want to call [gRPC](http://www.grpc.io/) services which are exposed publicly over `:443` TLS over an HTTP proxy, you can't.\n\nAlso, this allows you to call any TCP service over HTTP `CONNECT`... if your proxy allows you to `¯\\(ツ)/¯`\n\n## Supported features\n\n - [x] unencrypted connection to proxy (e.g. `http://proxy.example.com:3128`\n - [x] TLS connection to proxy (customizeable) (e.g. `https://proxy.example.com`)\n - [x] customizeable for `Proxy-Authenticate`, with challenge-response semantics\n - [x] out of the box support for `Basic` auth\n - [ ] appropriate `RemoteAddr` remapping\n \n\n## Usage with gRPC\n\n\n\n## License\n\n`go-http-dialer` is released under the Apache 2.0 license. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmwitkow%2Fgo-http-dialer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmwitkow%2Fgo-http-dialer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmwitkow%2Fgo-http-dialer/lists"}