{ "title": "Golang 本地网络请求拦截器:广告、敏感词、违规词过滤", "description": "使用 Golang 实现一个本地网络请求拦截器,无需代理,直接拦截包含广告链接、敏感词或违规词的请求,并提供详细的代码示例和中文注释。", "keywords": "Golang, 拦截器, 网络请求, 广告过滤, 敏感词过滤, 违规词过滤", "content": ""package main\n\nimport (\n"fmt"\n"io/ioutil"\n"net/http"\n"strings"\n)\n\n// 拦截器结构体\ntype Interceptor struct {\n\tAdLinks []string // 广告链接列表\n\tSensitiveWords []string // 敏感字词列表\n\tViolationWords []string // 违规词列表\n}\n\n// HTTP请求处理函数\nfunc (i *Interceptor) handler(w http.ResponseWriter, r *http.Request) {\n\t// 获取请求的URL\n\turl := r.URL.String()\n\n\t// 检查URL是否包含广告链接\n\tfor _, link := range i.AdLinks {\n\t if strings.Contains(url, link) {\n\t w.WriteHeader(http.StatusForbidden)\n\t fmt.Fprintf(w, "广告链接被拦截")\n\t return\n\t }\n\t}\n\n\t// 读取请求的Body内容\n\tbody, err := ioutil.ReadAll(r.Body)\n\tif err != nil {\n\t w.WriteHeader(http.StatusInternalServerError)\n\t fmt.Fprintf(w, "服务器内部错误")\n\t return\n\t}\n\n\t// 检查Body内容是否包含敏感字词或违规词\n\tcontent := string(body)\n\tfor _, word := range i.SensitiveWords {\n\t if strings.Contains(content, word) {\n\t w.WriteHeader(http.StatusForbidden)\n\t fmt.Fprintf(w, "敏感字词被拦截")\n\t return\n\t }\n\t}\n\n\tfor _, word := range i.ViolationWords {\n\t if strings.Contains(content, word) {\n\t w.WriteHeader(http.StatusForbidden)\n\t fmt.Fprintf(w, "违规词被拦截")\n\t return\n\t }\n\t}\n\n\t// 如果没有被拦截,则继续正常处理请求\n\tfmt.Fprintf(w, "正常处理请求")\n}\n\nfunc main() {\n\t// 创建拦截器实例\n\tinterceptor := &Interceptor{\n\t AdLinks: []string{"advertiser1.com", "advertiser2.com"}, // 广告链接列表\n\t SensitiveWords: []string{"敏感词1", "敏感词2"}, // 敏感字词列表\n\t ViolationWords: []string{"违规词1", "违规词2"}, // 违规词列表\n\t}\n\n\t// 注册HTTP请求处理函数\n\thttp.HandleFunc("/", interceptor.handler)\n\n\t// 启动HTTP服务器\n\terr := http.ListenAndServe(":8080", nil)\n\tif err != nil {\n\t fmt.Println("启动HTTP服务器失败:", err)\n\t}\n}\n"\n}


原文地址: https://www.cveoy.top/t/topic/pnGn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录