Jayden

Jayden

PAC(プロキシ自動設定)

私は長い間悩んでいる問題があります:

  • 私は macOS の熱心なユーザーであり、macOS 上で優れたソフトウェアを使用することができます。例えば、surge for mac を使用すると、ほとんどすべてのネットワークの問題を簡単に解決できます。

  • しかし、Windows や Linux では、この問題は少し複雑になりますが、Windows や Linux を使用することは依然として必要です。

  • 私はすべてのシステムにソフトウェアをデプロイしたり、設定ファイルを書いたりすることは望んでいません。

したがって、最良の方法は、surge for mac をプロキシサーバーとして使用して、他のデバイスのネットワークを制御することです。

私は学校の内部ネットワークにいるため、mac の IP アドレスを静的に設定することはできません。そのため、このソリューションを維持するために、mac の IP アドレスを定期的に更新する必要があります。

ChatGPT の助けを借りて、次のスクリプトを作成しました。このスクリプトは mac の IP アドレスを自動的に取得し、PAC(Proxy Auto-Config)設定ファイルを生成し、それを私のクラウドストレージにアップロードします。他のデバイスは、設定ファイルのアドレスを入力するだけで済みます。


  1. 以下のコードを 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
    
  2. タスクを設定します:

    crontab -e
    

    次の行を末尾に追加します(毎時 30 分に実行されますが、必要に応じて調整してください):

    30 * * * * /Users/jayden/proxy_pac/generate_pac.sh
    

この記事は Mix Space からの同期更新で、xLog にも掲載されています。
オリジナルのリンクは https://xxu.do/posts/geek/PAC です。


読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。