ずっと気になっていたことがある。
- 私はヘビーな macOS ユーザーで、macOS の優れたソフトウェア、例えば Surge for Mac のおかげで、ほぼすべてのネットワーク問題を簡単に解決できる。
しかし、Windows や Linux ではそうはいかず、複雑になりがちだ。それでも Windows や Linux を使う必要はある。
すべてのシステムにそれぞれソフトウェアをインストールして、設定ファイルを書くのは避けたい。
そこで、最善の方法はSurge for Mac をプロキシサーバーとして使い、他のデバイスのネットワークを引き受けることだ。
私は学校の広いイントラネットの中にいるため、Mac の IP アドレスを固定にできない。そのため、この仕組みを維持するには Mac の IP アドレスを更新し続ける必要がある。
ChatGPT の助けを借りて、Mac の IP アドレスを自動取得し、PAC(Proxy Auto-Config)設定ファイルを生成して、自分のクラウドストレージにアップロードするスクリプトを書いた。他のデバイスは設定ファイルの URL を入力するだけでよい。
次のコードを
generate_pac.shとして保存する。このスクリプトは同じディレクトリにproxy.pacを生成し、alist の WebDAV 機能でクラウドストレージにアップロードする。Shell#!/bin/zsh cd /Users/jayden/proxy_pac # 保证环境变量的一致以成功获取到 ip 地址。 PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin rm -f proxy.pac # Get the local IP address from interface en0 (commonly used for Wi-Fi) LOCAL_IP=$(ipconfig getifaddr en0) # Proxy ports HTTP_PROXY_PORT=6152 SOCKS_PROXY_PORT=6153 # PAC file path PAC_FILE="proxy.pac" # Generate the PAC file cat <<EOL > $PAC_FILE function FindProxyForURL(url, host) { var http_proxy = "PROXY $LOCAL_IP:$HTTP_PROXY_PORT"; var socks_proxy = "SOCKS5 $LOCAL_IP:$SOCKS_PROXY_PORT"; // Add your proxy rules here if (shExpMatch(host, "*.example.com")) { return "DIRECT"; // Direct connection } // Default to using HTTP proxy return http_proxy + "; " + socks_proxy; } EOL echo "PAC file generated at $PAC_FILE" >> proxy_pac.log # Upload the PAC file to Alist via WebDAV curl -X DELETE https://pan.xxu.do/dav/path/to/proxy.pac -u username:password curl -T $PAC_FILE https://pan.xxu.do/dav/path/to/proxy.pac -u username:password echo "PAC file generated and uploaded to Alist" >> proxy_pac.log date >> proxy_pac.logcron を設定する:
Shellcrontab -eそして、この行を末尾に追加する(毎時30分に実行。必要に応じて変更してください):
CRON30 * * * * /Users/jayden/proxy_pac/generate_pac.sh