go实现简单的反向代理工具
请暂时不要更新至2017.3.3或2017.3.4版本,本地代理已失效最近Jetbrians系列IDE更新至2017.3版本,激活检测机制也变成了动态封禁域名,导致大部分域名激活被屏蔽了,所以找了下资料,根据ilanyu的代码,改了下地址,实现了本地反向代理激活服务器。 具体Go代码如下:
package main
import (
"flag"
"log"
"net/http"
"net/http/httputil"
"net/url"
)
type handle struct {
reverseProxy string
}
func (this *handle) ServeHTTP(w http.ResponseWriter, r *http.Request) {
remote, err := url.Parse(this.reverseProxy)
if err != nil {
log.Fatalln(err)
}
proxy := httputil.NewSingleHostReverseProxy(remote)
r.Host = remote.Host
proxy.ServeHTTP(w, r)
log.Println(r.RemoteAddr + " " + r.Method + " " + r.URL.String() + " " + r.Proto + " " + r.UserAgent())
}
func main() {
bind := flag.String("l", "0.0.0.0:8888", "listen on ip:port")
remote := flag.String("r", "http://idea.imsxm.com:80", "reverse proxy addr")
flag.Parse()
log.Printf("Listening on %s, forwarding to %s", *bind, *remote)
h := &handle{reverseProxy: *remote}
err := http.ListenAndServe(*bind, h)
if err != nil {
log.Fatalln("ListenAndServe: ", err)
}
}
使用方法:编译了 X64平台,并且UPX打包,激活时输入http://localhost:8888就行。 下载地址:直接打开或者命令行加参数 可选参数: -l string listen on ip:port (default "0.0.0.0:8888") -r string reverse proxy addr (default "http://idea.imsxm.com:80")
Windows X64 V1.0 Linux X64 V1.0 MACOS X64 V1.0也可使用nginx/apache等web服务器 反向代理,nginx配置如下,将location段放在server段中
location /rpc {
proxy_pass http://idea.imsxm.com/rpc;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
mac可使用python 反向代理工具
pip install mitmproxy mitmproxy -p 8080 -R http://idea.imsxm.com
go实现简单的反向代理工具
https://www.imsxm.com/archives/go-active-proxy-tool