Windows の PAC スクリプトは接続先に応じてプロキシを選べます。R の curl パッケージで行うダウンロードでは、転送ハンドルを作る前に、その URL のルートを Windows ヘルパーに問い合わせます。

url <- "https://example.com/data.csv"
route <- curl::ie_get_proxy_for_url(url)
if (is.null(route)) route <- ""

handle <- curl::new_handle(proxy = route)
connection <- curl::curl(url, handle = handle)

接続はアプリケーションの通常の接続ライフサイクルに従って読み取り、閉じます。このスニペットはその curl ハンドルのルートを設定するだけで、R プロセス内のすべてのネットワークパッケージを構成するわけではありません。

ヘルパーは現在の Windows プロキシ構成を読み取ります。自動構成が有効な場合、評価には PAC スクリプトのダウンロードと実行が含まれることがあるため、検索自体に時間がかかることがあります。都合のよい無関係なテストサイトではなく、実際の対象 URL を使ってください。

プロキシが選択されない場合、ヘルパーは NULL を返します。例の明示的な空のプロキシ文字列は、セッションに残ったプロキシ環境変数にフォールバックするのではなく、この転送を直接行うよう libcurl に指示します。

PAC ファイルの URL は、結果として得られるプロキシのエンドポイントではありません。そのスクリプト URL をハンドルのプロキシ値として渡しても、libcurl にスクリプトの評価を求めることにはなりません。

この検索が返すのは選択されたプロキシであり、すべての PAC 候補に対するブラウザ同等の完全なフェイルオーバー機構ではありません。認証情報も提供しません。このポリシーを本当に必要とする Windows クライアントと curl 転送の範囲内に処理をとどめてください。

関連記事