برنامه شما از CFNetwork می‌پرسد که چگونه به یک وب‌سایت برسد و نشانی‌ای دریافت می‌کند که به .pac ختم می‌شود. قرار دادن آن نام میزبان در اتصال سوکت مسیر اشتباهی است: این نام یک اسکریپت پیکربندی را مشخص می‌کند.

CFNetworkCopyProxiesForURL برای نشانی مقصد یک آرایه مرتب از دیکشنری‌ها برمی‌گرداند. پیش از خواندن فیلدهای نقطه پایانی، kCFProxyTypeKey را بررسی کنید. دیکشنری از نوع kCFProxyTypeAutoConfigurationURL مقدار kCFProxyAutoConfigurationURLKey را فراهم می‌کند که به گام ارزیابی دیگری نیاز دارد.

  1. تنظیمات فعلی پروکسی سیستم را به دست آورید و مسیرهای منتهی به نشانی واقعی مقصد را درخواست کنید.
  2. وقتی نتیجه‌ای به نشانی PAC اشاره می‌کند، آن اسکریپت را برای همان مقصد ارزیابی کنید.
  3. انواع و نقاط پایانی نامزدهای حاصل را بخوانید. پروکسی HTTP، پروکسی SOCKS و مسیر مستقیم به مدیریت اتصال متفاوتی نیاز دارند.
  4. هنگام اعمال رفتار مجاز خطا و بازگشت، ترتیب نامزدها را حفظ کنید.

CFNetworkExecuteProxyAutoConfigurationURL اسکریپت را به‌صورت ناهمگام بارگیری و ارزیابی می‌کند. مقدار بازگشتی فوری آن یک منبع run loop است. آن منبع را زمان‌بندی کنید؛ فراخوان بازگشتی پس از پایان کار، نتیجه ارزیابی یا خطا را ارائه می‌دهد. ساختن منبع و بلافاصله خواندن یک متغیر نتیجه خالی، منتظر هیچ چیز نمی‌ماند. اگر باید عملیات لغو شود، منبع را باطل کنید.

نشانی مقصد را به جستجو متصل نگه دارید. اسکریپت PAC می‌تواند برای دو میزبان مسیرهای متفاوتی انتخاب کند، بنابراین ذخیره یک پروکسی حل‌شده به‌عنوان پاسخ برای همه مقصدهای بعدی، سیاست اسکریپت را تغییر می‌دهد. به همین ترتیب، نامزد مستقیم یک مسیر صریح است، نه نام میزبان پروکسی گم‌شده.

این APIها زمانی سودمندند که یک لایه انتقال سفارشی باید تنظیمات سیستم را تفسیر کند. آن‌ها پروتکل پروکسی بعدی را برای آن لایه انتقال پیاده‌سازی نمی‌کنند و جستجو گذرواژه‌ها را از Keychain بازیابی نمی‌کند. در macOS، اعتبارنامه پروکسی را جداگانه در Keychain تطبیق دهید.

مقالات مرتبط