PAC脚本语法(代理自动配置)
现在浏览器基本都支持PAC格式的代理脚本。本文仅介绍PAC脚本语法,并不解释使用方法。
参考文档:
https://en.wikipedia.org/wiki/Proxy_auto-config#DnsResolve
http://www.360doc.com/content/12/0618/16/2633_219014023.shtml
示例脚本
function FindProxyForURL(url, host) {// our local URLs from the domains below example.com don't need a proxy:if (shExpMatch(host, "*.example.com")){return "DIRECT";}// URLs within this network are accessed through// port 8080 on fastproxy.example.com:if (isInNet(host, "10.0.0.0", "255.255.248.0")){return "PROXY fastproxy.example.com:8080";}// All other requests go through port 8080 of proxy.example.com.// should that fail to respond, go directly to the WWW:return "PROXY proxy.example.com:8080; DIRECT";
}
主体
PAC脚本主体是一个FindProxyForURL的JS函数。函数的反回值有三类:
function FindProxyForURL(url,host)
{if(host=="http://www.domain.com/") return "DIRECT";return "PROXY myproxy:80;PROXY myotherproxy:8080;DIRECT";}
函数
isPlainHostName(host)
判断是否是本地主机
dnsDomainIs(host,domain) localHostOrDomainIs(host,”“)
判断访问主机是否属于某个域和某个域名
示例:
function FindProxyForURL(url, host)
{if ((isPlainHostName(host) ||dnsDomainIs(host, ".company.com")) &&!localHostOrDomainIs(host, "http://www.company.com/") &&!localHostOrDomainIs(host, "home.company.com"))return "DIRECT";elsereturn "PROXY proxy:80";
}
isResolvable(host)
主机名是否能被dns服务器解析
function FindProxyForURL(url, host)
{if (isResolvable(host))return "DIRECT";elsereturn "PROXY proxy:80";
}
isInNet(host,”“,”“)
访问IP是否在某个子网内
function FindProxyForURL(url, host)
{if (isInNet(host, "166.111.0.0", "255.255.0.0"))return "DIRECT";elsereturn "PROXY proxy:80";
}
shExpMatch(host,”“)
主机名判断
function FindProxyForURL(url, host)
{if (isPlainHostName(host))return "DIRECT";else if (shExpMatch(host, "*.com"))return "PROXY comproxy:80";else if (shExpMatch(host, "*.edu"))return "PROXY eduproxy:80";elsereturn "PROXY proxy:80";
}
url.substring(0,n)
截取协议字符串
function FindProxyForURL(url, host)
{if (url.substring(0, 5) == "http:") {return "PROXY proxy:80";}else if (url.substring(0, 4) == "ftp:") {return "PROXY fproxy:80";}else if (url.substring(0, 7) == "gopher:") {return "PROXY gproxy";}else if (url.substring(0, 6) == "https:") {return "PROXY secproxy:8080";}else {return "DIRECT";}
}
dnsResolve(host)
域名ip解析
unction FindProxyForURL(url, host)
{
if (dnsResolve(host) == "166.111.8.237") {
return "PROXY secproxy:8080";
}
else {
return "PROXY proxy:80";
}
}
myIpAddress
本地IP
function FindProxyForURL(url, host)
{if (myIpAddress() == "166.111.8.238") {return "PROXY proxy:80";
}
else {return "DIRECT";
}
}
dnsDomainLevels(host)
几级域名
function FindProxyForURL(url, host)
{if (dnsDomainLevels(host) > 0) { // if number of dots in host > 0return "PROXY proxy:80";}return "DIRECT";
}
weekdayRange
星期几
function FindProxyForURL(url, host)
{if(weekdayRange("WED", "SAT", "GMT"))return "PROXY proxy:80";elsereturn "DIRECT";
}
Math数学函数
通用js函数
Math.floor(Math.random()*5)
其它
iis设置mime
“扩展名”填 .pac
“MIME类型”填 .txt 或者 .h
PAC脚本语法(代理自动配置)相关推荐
- 代理proxy网络代理自动发现wpad代理自动配置pac三个概念解析
这里使用代理不是目的,抓包和修改请求和响应数据才是目的,使用代理只是为了实现抓包这个目的. 无代理模式 数据直来直往,浏览还可以通过devtools查看到接口的请求和响应数据,但是客户端无法查看和修改 ...
- win 10 使用本地代理自动配置pac
win 10 使用本地代理自动配置pac 1.修改注册表 以下内容保为pac.reg,双击.或手动修改注册表. Windows Registry Editor Version 5.00[HKEY_LO ...
- Android 代理自动配置PAC研究
Android 代理自动配置PAC研究 环境 小米6 MIUI9.2 Android7.1.1 MacOS 10.13.3 Charles 4.0.2 什么是PAC PAC,全称Proxy Auto ...
- 详解代理自动配置 PAC
转自知乎 最近一直在做跨域中华局域网的工作,了解了很多代理知识和基础概念,很零散,也很细碎.希望通过一段时间的学习,能够自由地穿梭在国际互联网和中华局域网之间.后续会写一系列文章记录我了解到的知识点, ...
- 代理自动配置PAC学习
什么是 PAC PAC,一个自动代理配置脚本,包含了很多使用 JavaScript 编写的规则,它能够决定网络流量走默认通道还是代理服务器通道,控制的流量类型包括:HTTP.HTTPS 和 FTP. ...
- 【pac文件】win10自动配置代理
目的 手动代理:所有地址经过代理,指定ip不经过代理 现在需求:实现指定ip范围才使用该代理 可以通过"自动设置代理"的方式实现 准备 已有代理地址,如:192.168.18.10 ...
- 代理自动配置文件PAC的使用方法
注意: 1.微软从Internet Explorer(IE)11版本开始,已经弃用本地PAC文件的方式(也就是我们说的"file://"方式)配置自动代理了,只能 ...
- PAC 代理自动发现简介
一 简介 1.1 什么是PAC文件 代理自动配置(PAC)文件包含一组用javaScript编码的规则,允许web浏览器确定是将Web流量直接发送到Internet还是通过代理服务器发送 ...
- springboot自动配置原理
概述 Springboot的基本认识 对于Spring框架,我们接触得比较多的是Spring mvc,Spring IOC.AOP.DI.而这框架如果在使用过程中,随着项目越来越大,引入的技术越来越多 ...
最新文章
- Good Luck!_JAVA
- 程序员面试题精选100题(06)-二元查找树的后序遍历结果[数据结构]
- 20144306《网络对抗》Web基础
- 【Linux学习】Linux的文件权限(一)
- 众多SEO专家集体盛赞
- Linux下安装和配置solr/tomcat/IK分词器 详细实例二.
- linux进程退出没有log,Linux下应用进程消失原因分析-Go语言中文社区
- PHP获取远程文件内容
- 【转】freetextbox的ToolBarLayout属性设置
- 信安教程第二版-第19章操作系统安全保护
- codeblocks哪个字体最舒服_如果给你一百万让你放弃一种美食永远不吃,你会放弃哪个?...
- c语言 去掉双引号_技术分享|浅谈C语言陷阱和缺陷
- openshift启动失败
- leetcode python3 简单题1.Two Sum
- java nio connect_服务器或客户端上的Java NIO套接字在什么时...
- 【原】移动web页面兼容处理的思考
- 自动控制原理复习——第二章 控制系统的数学模型,系统框图简化,信号流图,梅森公式,控制系统的传递函数(详细介绍)
- 好用的局域网共享工具
- coso全称是什么_COSO更新有关企业风险管理的草案
- ASP.NET Core 解决控制台输出日志内容前面[40m等乱码字符