Ацэнка PAC URL, якія вяртае CFNetworkCopyProxiesForURL
Пераўтварыце вынікі аўтаматычнай канфігурацыі проксі CFNetwork у маршруты для канкрэтнага прызначэння, не блытаючы адрас PAC з канчатковым пунктам проксі.
Ваша праграма пытае CFNetwork, як дасягнуць сайта, і атрымлівае URL, які заканчваецца на .pac. Уставіць гэтае імя хоста ў злучэнне сокета — няправільны паварот: яно пазначае скрыпт канфігурацыі.
CFNetworkCopyProxiesForURL вяртае ўпарадкаваны масіў слоўнікаў для мэтавага URL. Праверце kCFProxyTypeKey перад чытаннем палёў канчатковага пункта. Слоўнік тыпу kCFProxyTypeAutoConfigurationURL дае kCFProxyAutoConfigurationURLKey, што патрабуе яшчэ аднаго кроку ацэнкі.
- Атрымайце бягучыя сістэмныя налады проксі і запытайце маршруты да фактычнага URL прызначэння.
- Калі вынік спасылаецца на URL PAC, ацаніце гэты скрыпт для таго ж прызначэння.
- Прачытайце атрыманыя тыпы кандыдатаў і канчатковыя пункты. HTTP-проксі, SOCKS-проксі і прамы маршрут патрабуюць рознай апрацоўкі злучэння.
- Захоўвайце парадак кандыдатаў пры прымяненні дазволеных паводзін збою і вяртання.
CFNetworkExecuteProxyAutoConfigurationURL спампоўвае і ацэньвае скрыпт асінхронна. Яго непасрэднае вяртанае значэнне — крыніца цыклу падзей. Заплануйце гэтую крыніцу; пасля завяршэння працы зваротны выклік дае вынік ацэнкі або памылку. Стварэнне крыніцы і неадкладнае чытанне пустой зменнай выніку нічога не чакае. Зрабіце крыніцу несапраўднай, калі аперацыю трэба скасаваць.
Трымайце мэтавы URL прывязаным да пошуку. Скрыпт PAC можа выбраць розныя маршруты для двух хостаў, таму захаванне аднаго вызначанага проксі як адказу для ўсіх наступных прызначэнняў змяняе палітыку скрыпта. Гэтак жа прамы кандыдат — гэта яўны маршрут, а не адсутнае імя хоста проксі.
Гэтыя API карысныя, калі ўласны транспарт павінен інтэрпрэтаваць сістэмныя налады. Яны не рэалізуюць наступны пратакол проксі для гэтага транспарту, і пошук не атрымлівае паролі з Keychain. На macOS супастаўце ўліковыя даныя проксі ў Keychain асобна.