测试环境
- win10 x64
源码
参考Python 设置代理
https://www.cnpython.com/qa/361707
winapi struct 内存对齐
package main
import (
"flag"
"fmt"
"syscall"
"unsafe"
)
const (
INTERNET_PER_CONN_FLAGS = 1
INTERNET_PER_CONN_PROXY_SERVER = 2
INTERNET_PER_CONN_PROXY_BYPASS = 3
INTERNET_OPTION_REFRESH = 37
INTERNET_OPTION_SETTINGS_CHANGED = 39
INTERNET_OPTION_PER_CONNECTION_OPTION = 75
)
/*
typedef struct {
DWORD dwOption;
union {
DWORD dwValue;
LPSTR pszValue;
FILETIME ftValue;
} Value;
} INTERNET_PER_CONN_OPTIONA, *LPINTERNET_PER_CONN_OPTIONA;
typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME, *LPFILETIME;
*/
type INTERNET_PER_CONN_OPTION struct {
dwOption uint32
dwValue uint64 // 注意 32位 和 64位 struct 和 union 内存对齐
}
type INTERNET_PER_CONN_OPTION_LIST struct {
dwSize uint32
pszConnection *uint16
dwOptionCount uint32
dwOptionError uint32
pOptions uintptr
}
func SetProxy(proxy string) error {
winInet, err := syscall.LoadLibrary("Wininet.dll")
if err != nil {
return fmt.Errorf(fmt.Sprintf(