Оценете ги PAC URL-адресите што ги враќа CFNetworkCopyProxiesForURL
Претворете ги резултатите од автоматската конфигурација на прокси на CFNetwork во рути специфични за дестинацијата без да ја замените PAC-адресата со крајната точка на проксито.
Вашата апликација го прашува CFNetwork како да стигне до веб-страница и добива URL што завршува на .pac. Ставањето на тоа име на домаќин во socket-врската е погрешен пат: тоа означува скрипта за конфигурација.
CFNetworkCopyProxiesForURL враќа подредена низа од речници за целната URL. Проверете го kCFProxyTypeKey пред да ги читате полињата на крајната точка. Речник од типот kCFProxyTypeAutoConfigurationURL обезбедува kCFProxyAutoConfigurationURLKey, што бара уште еден чекор за оценување.
- Земете ги тековните системски поставки за прокси и побарајте рути до вистинската целна URL.
- Кога резултатот упатува на PAC URL, оценете ја таа скрипта за истата дестинација.
- Прочитајте ги типовите и крајните точки на добиените кандидати. HTTP-прокси, SOCKS-прокси и директна рута бараат различно ракување со врската.
- Зачувајте го редоследот на кандидатите при примена на дозволеното однесување при неуспех и резерва.
CFNetworkExecuteProxyAutoConfigurationURL ја презема и оценува скриптата асинхроно. Неговата непосредна повратна вредност е извор на run loop. Закажете го тој извор; повикот за враќање го дава резултатот од оценувањето или грешката откако работата ќе заврши. Создавањето на изворот и веднаш читање празна променлива за резултат не чека ништо. Отфрлете го изворот ако операцијата мора да се откаже.
Држете ја целната URL поврзана со пребарувањето. PAC-скрипта може да избере различни рути за два домаќини, така што чувањето на едно решено прокси како одговор за секоја следна дестинација ја менува политиката на скриптата. Исто така, директен кандидат е експлицитна рута, а не име на домаќин на прокси што недостасува.
Овие API-ја се корисни кога прилагоден транспорт треба да ги толкува системските поставки. Тие не го имплементираат следниот прокси-протокол за тој транспорт и пребарувањето не презема лозинки од Keychain. На macOS посебно усогласете ги акредитивите за прокси во Keychain.