1 Star 0 Fork 12

懒散的猫头鹰/my_http_proxy

forked from wangkechun/my_http_proxy 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
reproxy.go 1.65 KB
一键复制 编辑 原始数据 按行查看 历史
wangkechun 提交于 2014-09-25 19:22 +08:00 . reproxy
package main
import (
"fmt"
"github.com/Unknwon/goconfig"
"math/rand"
"net/http"
"net/http/httputil"
"net/url"
"sort"
)
var p = fmt.Println
var ini iniType
func main() {
ini = intInit()
http.HandleFunc("/", handerAll)
binding := ":" + ini.port
p("goproxy started on port :", binding)
err := http.ListenAndServe(binding, nil)
if err != nil {
p("[ERROR] ERROR: ", err)
return
}
}
func handerAll(respWriter http.ResponseWriter, req *http.Request) {
fmt.Print("*")
defer req.Body.Close()
respWriter.Header().Set("goproxy", "wkc_go_proxy")
director := func(req *http.Request) {}
proxy := getTransportFieldURL()
reverseProxy := httputil.ReverseProxy{Director: director,
Transport: proxy,
FlushInterval: 100000000,
}
reverseProxy.ServeHTTP(respWriter, req)
if err := recover(); err != nil {
p("*********unknow error*********")
p(err)
p("\n\n\n")
}
}
func getTransportFieldURL() (transport *http.Transport) {
url_i := url.URL{}
url_proxy, _ := url_i.Parse(randProxy())
proxy := http.ProxyURL(url_proxy)
transport = &http.Transport{Proxy: proxy}
return transport
}
func randProxy() string {
r := ini.proxy[rand.Int()%len(ini.proxy)]
//p("proxy ", r)
return r
}
type iniType struct {
port string
proxy []string
}
func intInit() iniType {
var t iniType
ini, err := goconfig.LoadConfigFile("goproxy.ini")
if err != nil {
p(err)
}
t.port, err = ini.GetValue("port", "port")
iProxy, err := ini.GetSection("proxy")
for _, value := range iProxy {
t.proxy = append(t.proxy, value)
}
sort.Strings(t.proxy)
p(t.proxy)
return t
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/tianyadg/my_http_proxy.git
git@gitee.com:tianyadg/my_http_proxy.git
tianyadg
my_http_proxy
my_http_proxy
master

搜索帮助