golang http代理(带身份认证)

golang http代理(带身份认证)  直接上代码

 

配置文件:  c.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
##配置文件  每行顶格写,分隔符冒号后面有空格
 
proxy_port: 9527    #监听端口
user: z1            #账号  <br>#若账号为空则无需认证
password: m1        #密码
  
ip_black_list : #要过滤的IP前缀
  - '142.'        
  - '35.'
  - '13.'
 
domain_black_list : #要过滤的域名
 - 'google.'
  
#填写代理端口号,然后启动代理即可.注意端口号不要跟其他程序冲突

  

 

配置解析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package main
 
import (
    "fmt"
    "io/ioutil"
    "strings"
 
    "gopkg.in/yaml.v2"
)
 
type yaml_Config struct {
    Listen    string   `yaml:"proxy_port"`
    User      string   `yaml:"user"`
    Password  string   `yaml:"password"`
    StrSlice  []string `yaml:"ip_black_list"`
    StrSlice2 []string `yaml:"domain_black_list"`
}
 
var conf yaml_Config
 
//读取配置参数 conf
func initconf() {
 
    data, err := ioutil.ReadFile("c.yaml")
    if err != nil {
        fmt.Println(1, err)
        return
    }
 
    if err := yaml.Unmarshal([]byte(data), &conf); err != nil { //解析yaml文件
        fmt.Println(2, err)
        return
    }
 
    fmt.Println("proxy_port :", conf.Listen)
    fmt.Println("user :", conf.User)
    fmt.Println("password :", conf.Password)
    fmt.Println("ip_black_list is :")
 
    for i, m := range conf.StrSlice {
        fmt.Println(i, "==>", m)
    }
 
}
 
/*黑名单*/
func veryip_black(s string) bool {
 
    if len(conf.StrSlice) != 0 {
        for _, ip := range conf.StrSlice {
 
            if strings.HasPrefix(s, ip) {
                return true
            }
        }
 
    }
    if len(conf.StrSlice2) != 0 {
        for _, domain := range conf.StrSlice2 {
 
            if strings.Contains(s, domain) {
                return true
            }
        }
 
    }
 
    return false
 
}

  

主文件代码:

  

 

 

以上就是全部了.

 

posted @   wsh3166Sir  阅读(977)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示