[TODO] You Don't Need a GUI Proxy Client

This is for macOS

Install Xray with Homebrew

1
brew install xray

I will not use Homebrew anymore due to macOS downgrade.

Write Xray Config File

Open Config File Using nano

1
nano /opt/homebrew/etc/xray/config.json

Write Xray Client Config File

  1. replace username with your real username
  2. create .xray_log folder under your home folder
  3. create access.log and error.log file under .xray_log folder
  4. grant 755 to .xray_log, and 666 to access.log and error.log.
  5. replace IPaddress, port, id, serverName, publicKey, shortId
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
{
  "log": {
    "loglevel": "warning",
    "access": "/Users/uesername/.xray_log/access.log",
    "error": "/Users/uesername/.xray_log/error.log"
  },
  "dns": {
    "servers": [
      {
        "address": "1.1.1.1",
        "domains": ["geosite:geolocation-!cn"]
      },
      {
        "address": "223.5.5.5",
        "domains": ["geosite:cn"],
        "expectIPs": ["geoip:cn"]
      },
      {
        "address": "114.114.114.114",
        "domains": ["geosite:cn"]
      },
      "localhost"
    ]
  },
  "routing": {
    "domainStrategy": "AsIs",
    "rules": [
      {
        "type": "field",
        "domain": ["geosite:category-ads-all"],
        "outboundTag": "block"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": ["geoip:private", "geoip:cn", "223.5.5.5", "114.114.114.114"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:geolocation-!cn"],
        "outboundTag": "proxy"
      },
      {
        "type": "field",
        "ip": ["1.1.1.1"],
        "outboundTag": "proxy"
      }
    ]
  },
  "inbounds": [
    {
      "tag": "socks-in",
      "protocol": "socks",
      "listen": "0.0.0.0",
      "port": 10800,
      "settings": {
        "udp": true
      },
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls", "quic"],
        "routeOnly": true
      }
    },
    {
      "tag": "http-in",
      "protocol": "http",
      "listen": "0.0.0.0",
      "port": 10801,
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls", "quic"],
        "routeOnly": true
      }
    }
  ],
  "outbounds": [
    {
      "tag": "proxy",
      "protocol": "vless",
      "settings": {
        "vnext": [
          {
            "address": "xxx.xxx.xxx.xxx",
            "port": 99999,
            "users": [
              {
                "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                "flow": "xtls-rprx-vision",
                "encryption": "none"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "fingerprint": "firefox",
          "serverName": "xxxxxxx.xxx",
          "publicKey": "xxxxxxxxxxxxxxxxxxxxxx",
          "shortId": "xxxxxxxxx",
          "spiderX": ""
        }
      }
    },
    {
      "tag": "direct",
      "protocol": "freedom"
    },
    {
      "tag": "block",
      "protocol": "blackhole"
    }
  ]
}

Add Proxy Switch to .zshrc

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# uesername add proxy
proxyon(){
  # Set environment variables
  export http_proxy="http://127.0.0.1:10801"
  export https_proxy="http://127.0.0.1:10801"
  export all_proxy="socks5://127.0.0.1:10800"
  echo "Environment variables set for HTTP, HTTPS, and SOCKS5 proxies."

  # Set system-level proxy for Wi-Fi
  networksetup -setwebproxy Wi-Fi 127.0.0.1 10801
  networksetup -setsecurewebproxy Wi-Fi 127.0.0.1 10801
  networksetup -setsocksfirewallproxy Wi-Fi 127.0.0.1 10800
  echo "System-level proxy enabled for Wi-Fi."

  # Start Xray
  brew services start xray
  echo "Xray config file path is /opt/homebrew/etc/xray/config.json"
  echo "Xray log file path is /Users/uesername/.xray_log"
  # Return Xray status and IP info
  brew services info xray
  echo "Your IP address is $(curl -s ip.sb)"
}

proxyoff() {
  # Unset environment variables
  unset http_proxy
  unset https_proxy
  unset all_proxy
  echo "Environment variables for proxies unset."

  # Disable system-level proxy for Wi-Fi
  networksetup -setwebproxystate Wi-Fi off
  networksetup -setsecurewebproxystate Wi-Fi off
  networksetup -setsocksfirewallproxystate Wi-Fi off
  echo "System-level proxy disabled for Wi-Fi."

  # Stop xray
  brew services stop xray

  # Return Xray status and IP info
  brew services info xray
  echo "Your IP address is $(curl -s ip.sb)"
}

# uesername add some alias
alias ipinfo="curl -s ipinfo.io"
Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy