参考飞雪无情的HTTP代理,稍微改了下,HTTP不能代理,HTTPS可以代理

jiangyd · · 710 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

``` package main import ( "bufio" "bytes" "fmt" "io" "log" "net" "net/url" "strings" ) func main() { l, err := net.Listen("tcp", ":8082") if err != nil { log.Panic(err) } for { client, err := l.Accept() if err != nil { log.Panic(err) } go handleClientRequest(client) } } func handleClientRequest(client net.Conn) { if client == nil { return } defer client.Close() br := bufio.NewReader(client) line, err := br.ReadBytes('\n') line = bytes.TrimRight(line, "\r\n") if err != nil { fmt.Println(err) return } lines := strings.Split(string(line), " ") var addr string url, _ := url.Parse(lines[1]) if lines[0] != "CONNECT" { if strings.Index(url.Host, ":") == -1 { addr = url.Host + ":80" } else { addr = url.Host } } else { addr = lines[1] } server, err := net.Dial("tcp", addr) if err != nil { return } if lines[0] == "CONNECT" { fmt.Fprint(client, "HTTP/1.1 200 Connection established\r\n\r\n") } else { //server.Write(b[:n]) //这一步是干啥呢,不知道怎么写 } //进行转发 go io.Copy(server, client) io.Copy(client, server) } ``` 参考 https://www.flysnow.org/2016/12/24/golang-http-proxy.html

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

710 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传