バイパスリスト付きローカルプロキシ:Windows バッチスクリプト

公開日 2025年8月6日 著者 Remy

Windows バッチスクリプトでローカルプロキシを設定する究極ガイド

開発者、IT プロフェッショナル、または上級ユーザーで、Windows ネットワーク設定を素早く管理する方法をお探しですか?デバッグのためにコンピュータのインターネットトラフィックを特定のアプリケーション経由でルーティングする必要があるかもしれませんし、特定のソフトウェアが正常に動作するためにカスタムプロキシ設定が必要かもしれません。

Windows でこれらの設定を手動で変更するのは面倒です。幸いなことに、シンプルで強力なバッチスクリプトがプロセス全体を自動化できます。

このガイドでは、WinHTTP プロキシ設定を自動設定するスクリプトを分解し、各部分の機能を説明し、自分のニーズに合わせてカスタマイズする方法を示します。

スクリプトの機能:高レベル概要

このスクリプトの核心は、ネットワーク設定の自動化ツールです。2つの主要な操作を実行します:

  1. 管理者権限の取得: システム全体のネットワーク設定を変更するには昇格された権限が必要です。スクリプトは巧みに自動的に管理者権限を要求するため、実行するたびに「管理者として実行」を選択することを覚えておく必要はありません。
  2. システムプロキシの設定: Windows を設定して、ほとんどのインターネットトラフィックを自分のマシン(localhost)上のプロキシサーバー経由で送信させます。これは、ネットワークリクエストを監視、変更、または制御する必要があるアプリケーションに不可欠です。
  3. プロキシ例外の定義: プロキシを経由すべきではないドメインを含む「バイパスリスト」を指定します。これにより、ローカルサイトや特定の国ドメインへの接続など、重要なバックグラウンドサービスが中断されることなく正常に動作し続けることが保証されます。

スクリプト本体

これが分解する予定のコードです。開発またはテスト環境を素早く設定するための強力なツールです。

@echo off
:Get Admin Access
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit

netsh winhttp set proxy localhost:15236 bypass-list="<local>;*.cn;*.localsite.com"

pause

深く理解する:コードを行ごとに解析

各コマンドの機能を行ごとに解析しましょう。

@echo off

これはほとんどのバッチスクリプトの冒頭にある標準コマンドです。コマンドプロンプトウィンドウをきれいに保ち、コマンド実行時にコマンド自体が表示されるのを防ぎます。

管理者権限取得のトリック:%1 mshta ...

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute(...)

この巧妙な行が自動権限昇格の鍵です。Windows の組み込みコンポーネント(mshta.exe)を使用してユーザーアカウント制御(UAC)プロンプトをトリガーし、管理者権限を要求します。権限を付与すると、スクリプトは必要なアクセス権で再起動します。スクリプトがすでに管理者権限を持っている場合、この行はスキップされます。

コアコマンド:netsh winhttp set proxy ...

これがスクリプトが本領を発揮する場所です。その構成要素を見てみましょう:

  • netsh winhttp set proxy:このコマンドは Windows ネットワークシェル(netsh)に WinHTTP の設定を変更するよう指示します。WinHTTP は、Windows Update などの多くのシステムコンポーネントやアプリケーションがインターネットにアクセスするために使用するサービスです。
  • localhost:15236:これはプロキシサーバーを localhost(自分のコンピュータの一般的な名前)のポート 15236 に設定します。これにより、Windows はトラフィックをその特定のポートで実行しているローカルアプリケーションに送信します。
  • bypass-list="...":これは安定性にとって極めて重要です。プロキシを無視して直接接続すべきアドレスをリストします。この例では:
    • <local>:すべてのローカルネットワークアドレス(例:ファイルサーバー、プリンター)をバイパス。
    • *.cn.cn で終わるすべてのドメインをバイパス。
    • *.localsite.com:特定のローカルまたは開発ドメインをバイパス。

pause

この最終コマンドは、スクリプト完了後にコマンドプロンプトウィンドウがすぐに閉じるのを防ぎます。これにより、出力を読み、成功またはエラーメッセージを確認する時間が得られます。

ニーズに合わせてスクリプトをカスタマイズする方法

このスクリプトの真の強力さは適応性にあります。自分のプロジェクトに合わせて簡単に変更できます。コードを新しいテキストファイルにコピーし、.bat 拡張子で保存するだけです(例:proxy_config.bat)。

カスタマイズ方法:

  • ポートの変更: 15236 をローカルアプリケーションが使用するポート番号に置き換えます(例:Burp Suite は 8080、Zap は 9090、または独自のアプリケーションのカスタムポート)。
  • バイパスリストの編集: bypass-list="..." 文字列内のドメインを変更します。会社が使用するドメインや、ローカルプロキシ経由でルーティングすべきでないサービスを追加します。各エントリはセミコロン(;)で区切ります。

このシンプルなスクリプトを理解してカスタマイズすることで、貴重な時間を節約し、ワークフローを簡素化でき、ネットワーク設定をワンクリックプロセスにできます。