PROXY: Автоматическая настройка приложений

Используем PAC-файл для автоматической настройки приложений на работу через PROXY-сервер.

Proxy Auto-Configuration (PAC) - это специальный файл, при помощи которого поддерживаемые приложения могут автоматически настраиваться на работу с PROXY-сервером.

Скрипт

Скрипт состоит из одного файла proxy.pac.js, который необходимо отредактировать под себя и загрузить на ресурсы, доступные настраиваемым приложениям.

Установка

  • Изменить содержимое переменной proxyServer на необходимые параметры.
  • Сохранить скрипт proxy.pac.js под именем proxy.pac в месте, доступном для приложений, которые настраиваются при помощи PAC-файла.
  • В приложении, которое поддерживает конфигурирование прокси через PAC-файл, прописать путь к скрипту.

Приложение

proxy.pac.js
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
const proxyServer = 'HTTP proxy.example.org:3128; SOCKS5 proxy.example.org:1080; PROXY proxy.example.org:8080; DIRECT';
const dnsCache = {};

const localTldStorage = [
  '.home.arpa',
  '.internal',
];

const directTldStorage = [
  '.am',
  '.az',
  '.by',
  '.kg',
  '.kz',
  '.md',
  '.mn',
  '.ru',
  '.su',
  '.tatar',
  '.tj',
  '.tm',
  '.uz',
  '.xn--p1ai', // .рф
];

function fastResolve(host) {
  let ip = dnsResolve(host);
  if (dnsCache[host]) return dnsCache[host];
  if (ip) dnsCache[host] = ip;
  return ip;
}

function FindProxyForURL(url, host) {
  url = url.toLowerCase();
  host = host.toLowerCase();

  if (isPlainHostName(host)) return 'DIRECT';

  let ip = fastResolve(host);

  if (
    isInNet(ip, '127.0.0.0', '255.0.0.0') ||
    isInNet(ip, '10.0.0.0', '255.0.0.0') ||
    isInNet(ip, '172.16.0.0', '255.240.0.0') ||
    isInNet(ip, '192.168.0.0', '255.255.0.0')
  ) {
    return 'DIRECT';
  }

  if (localTldStorage.length !== 0) {
    for (let i = 0; i < localTldStorage.length; i++) {
      if (dnsDomainIs(host, localTldStorage[i])) return 'DIRECT';
    }
  }

  if (directTldStorage.length !== 0) {
    for (let i = 0; i < directTldStorage.length; i++) {
      if (dnsDomainIs(host, directTldStorage[i])) return 'DIRECT';
    }
  }

  return proxyServer;
}

Параметры

  • proxyServer - команды для браузера по настройке прокси-сервера.
    • HTTP - использовать HTTP-прокси.
    • SOCKS5 - использовать SOCKS5-прокси.
    • PROXY - использовать прокси-сервер, соответствующий протоколу исходного запроса.
    • DIRECT - если прокси-сервер не отвечает, обращаться к веб-сайту напрямую.
    • proxy.example.org:PORT - домен и порт прокси-сервера.
  • localTldStorage - список доменов локальной сети.
  • directTldStorage - список доменов, к которым необходимо обращаться напрямую, без использования прокси-сервера.
Авторы
Мета
Лицензия
ID файла
UUID
Системный путь
Тип
Статистика
Количество слов
Время чтения
мин.