私は長い間悩んでいる問題があります:
-
私は macOS の熱心なユーザーであり、macOS 上で優れたソフトウェアを使用することができます。例えば、surge for mac を使用すると、ほとんどすべてのネットワークの問題を簡単に解決できます。
-
しかし、Windows や Linux では、この問題は少し複雑になりますが、Windows や Linux を使用することは依然として必要です。
-
私はすべてのシステムにソフトウェアをデプロイしたり、設定ファイルを書いたりすることは望んでいません。
したがって、最良の方法は、surge for mac をプロキシサーバーとして使用して、他のデバイスのネットワークを制御することです。
私は学校の内部ネットワークにいるため、mac の IP アドレスを静的に設定することはできません。そのため、このソリューションを維持するために、mac の IP アドレスを定期的に更新する必要があります。
ChatGPT の助けを借りて、次のスクリプトを作成しました。このスクリプトは mac の IP アドレスを自動的に取得し、PAC(Proxy Auto-Config)設定ファイルを生成し、それを私のクラウドストレージにアップロードします。他のデバイスは、設定ファイルのアドレスを入力するだけで済みます。
-
以下のコードを
generate_pac.sh
という名前で保存します。このスクリプトは、同じディレクトリにproxy.pac
ファイルを生成し、alist の WebDAV 機能を使用してクラウドストレージにアップロードします。#!/bin/zsh cd /Users/jayden/proxy_pac # 環境変数を一貫させてIPアドレスを正常に取得できるようにします。 PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin rm -f proxy.pac # ローカルIPアドレスをen0インターフェース(Wi-Fiによく使用される)から取得します。 LOCAL_IP=$(ipconfig getifaddr en0) # プロキシポート HTTP_PROXY_PORT=6152 SOCKS_PROXY_PORT=6153 # PACファイルのパス PAC_FILE="proxy.pac" # PACファイルを生成します 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"; // ここにプロキシのルールを追加します if (shExpMatch(host, "*.example.com")) { return "DIRECT"; // 直接接続 } // デフォルトはHTTPプロキシを使用します return http_proxy + "; " + socks_proxy; } EOL echo "PACファイルが $PAC_FILE に生成されました" >> proxy_pac.log # PACファイルをAlistに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ファイルが生成され、Alistにアップロードされました" >> proxy_pac.log date >> proxy_pac.log
-
タスクを設定します:
crontab -e
次の行を末尾に追加します(毎時 30 分に実行されますが、必要に応じて調整してください):
30 * * * * /Users/jayden/proxy_pac/generate_pac.sh
この記事は Mix Space からの同期更新で、xLog にも掲載されています。
オリジナルのリンクは https://xxu.do/posts/geek/PAC です。