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
}
** 问题说明:
使用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