[golang/go]affected/package: windows X86环境下,tls 库貌似有点问题

2023-12-11 173 views
4
package main

import "C"
import (
    "fmt"
    "golang.org/x/net/proxy"
    "net/http"
    "net/url"
)

func init() {
    Request, _ = http.NewRequest("GET", "https://www.jungleerummy.com/ws", nil)
    Request.Header.Set("Connection", "Upgrade")
    Request.Header.Set("Host", "www.jungleerummy.com")
    Request.Header.Set("Origin", "https://www.jungleerummy.com")
    Request.Header.Set("Pragma", "no-cache")
    Request.Header.Set("Sec-WebSocket-Extensions", "permessage-deflate; client_max_window_bits")
    Request.Header.Set("Sec-WebSocket-Key", "BnZwwh6tInwK/uG0mWyzxQ==")
    Request.Header.Set("Sec-WebSocket-Version", "13")
    Request.Header.Set("Upgrade", "websocket")
    Request.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36")
}

var Request *http.Request

func transport(proxyURL string) *http.Transport {
    // 设置代理服务器的地址
    _proxyURL, err := url.Parse(proxyURL)
    if err != nil {
        fmt.Println("解析代理地址失败:", err)
        return nil
    }
    // 创建一个 Dialer,使用 SOCKS5 代理
    dialer, err := proxy.FromURL(_proxyURL, proxy.Direct)
    if err != nil {
        fmt.Println("创建 Dialer 失败:", err)
        return nil
    }
    // 创建一个自定义的 Transport,使用 SOCKS5 代理
    _transport := &http.Transport{
        Dial: dialer.Dial,
    }
    return _transport
}
func main() {

    //问题说明:使用Go 1.21.1 / 1.21.3 编译 Windows 32位DLL,返回403
    //        使用Go 1.21.1 / 1.21.3 编译 Windows 64位DLL,返回101
    //        使用Go 1.18.4 / 1.20.4 编译 Windows 32位DLL,返回101
    //        使用Go 1.21.1 / 1.21.3 直接运行、调试返回101
}

//export Test
func Test() int {
    // 创建 HTTP 客户端
    // * 使用US地区的Socket5代理服务器
    // * Using Socket5 proxy servers in the US region
    client := &http.Client{Transport: transport("socks5://192.168.31.1:2082")}
    // 发送请求并获取响应
    resp, err := client.Do(Request)
    if err != nil {
        fmt.Println("Request error")
        return 0
    }
    fmt.Println("StatusCode=", resp.StatusCode)
    return resp.StatusCode
}

problem code

** 问题说明:
                      使用Go 1.21.1 / 1.21.3 编译 Windows 32位DLL,返回403
                  使用Go 1.21.1 / 1.21.3 编译 Windows 64位DLL,返回101
                  使用Go 1.18.4 / 1.20.4 编译 Windows 32位DLL,返回101
                   使用Go 1.21.1 / 1.21.3 直接运行、调试返回101**

我使用的GCC是:TDM64-gcc-10.3.0-2

回答