`
wuzhizhemu
  • 浏览: 16322 次
社区版块
存档分类
最新评论

编写PAC文件

阅读更多
今天无意间接触到有人说可以自己写代理于是就查找了资料自己谢了一个简单的代理。
这里写的非常简单,只用到了几个简单的函数,下面进行简单的介绍:
pac文件就是扩展名是pac的一个文件,里面的方法都是javascript编写的,懂javascript就不必多说了,即使一点不懂的也应该很容易看明白。
下面开始介绍一下文件的写法,首先是文件中必须用到的一个函数:FindProxyForURL(url,host),PAC文件中必须包含这个函数,因为只要文件被引入调用就会查找这个函数,然后根据里面设置的规则进行匹配。
首先来一个最简单的pac文件的代码。
        function FindProxyForURL(url, host) {
    		return "DIRECT";
	}
        

上面是非常简单的一个javascript函数,只有一个返回值是一个字符串"DIRECT",在这里“DIRECT”的意思是直接连接,不通过代理。
FindProxyForURL(url, host)3种常用的返回值:
1)DIRECT 这个很简单就是直接链接
2)"PROXY www.example.com:8080"或者"PROXY 127.0.0.1:8080" 这个就是HTTP代理的主机和端口值,主机可以是域名或者IP地址
3)"SOCKS5 socks5sample.com:1080" socks5代理的主机和端口,主机也可以用IP表示
4)最后一种就是多种混用的返回方式:"DIRECT ; PROXY www.example.com:8080; SOCKS5 socks5sample.com:1080"就是先直接连接,直接连接不可用再调用HTTP代理,还不可用就再调用SOCKS5代理
上面的代码其实是没有什么意义的,因为直接连接还不如不设置,浏览器本身就是直接链接。下面介绍几个有用的函数来丰富我们上面的代码,使pac文件真正的起到代理的作用。
1) shExpMatch(str, shexp)函数,
功能:看str能否匹配shexp
参数介绍:
str参数一般就传入FindProxyForURL(url, host)中的url,这也就是我们要访问的网址,
shexp这个参数从名字上也能看出一点来,不错这个是一个可以让我们过滤出满足条件的正则表达式(这个如果不会可以自己去调查,这里不做介绍。)
返回值: boolean(true/false),str匹配shexp成功则返回true失败则返回false
举例:shExpMatch("www.google.com","*.google.*")  返回true
    shExpMatch("www.google.com","*.baidu.*")  返回false
这样我们就可以接下来这么写:
       
        function FindProxyForURL(url, host){
		if(shExpMatch(url,"*.google.*")){
		    return "127.0.0.1:8087";
		} else {
		    return "DIRECT";
		}
	}
        


简单的代码就写到这里,还有更复杂的就不介绍了,可以自己去写,然后下面提供一下写PAC文件常用的一些函数,传送门:http://www.truevue.org/javascript/pac-functions
分享到:
评论

相关推荐

    pac文件自动配置网络

    它是一种使用 JavaScript 语言编写的文本文件,用于指定在访问特定网址时应使用哪个代理服务器或直接连接。PAC 文件主要用于在企业和组织网络中实现代理自动配置,以便管理和控制网络访问。 工作原理: 当用户试图...

    pacparser:用于解析代理自动配置(PAC)文件的库

    PAC文件是用JavaScript编写的,可以编程以返回不同的代理方法(例如"PROXY proxy1:port; DIRECT" ),具体取决于URL,源IP地址,协议,一天中的时间等。PAC文件引入了很多可能性。 请查看Wikipedia条目以了解代理...

    Proxy Switcher-crx插件

    语言:English 通过工具栏弹出轻松在多个代理之间切换。 Proxy Switcher是一个扩展,可帮助您从工具栏弹出UI轻松切换代理。 只需打开工具栏弹出窗口,然后...如果您不知道如何编写PAC文件,请阅读此(https://en.wiki

    pacpac:基于 lua 的 Pac-Man 克隆

    或者,在 OS X 和 Ubuntu 中, love pacpac.love输入love pacpac.love - 假设love可执行文件在您的路径中。 关卡编辑 我已经设置了游戏,这样您就可以制作自己的关卡,而无需知道如何编程。 只需编辑level1.txt或...

    pyc-man:Pygame PAC MAN

    pyc-man Pygame PAC MAN 待办事项:编写自述文件

    魔术公式轮胎模型

    该文件中包含了魔术公式轮胎模型,代码全部用matlab编写,具有很高的参考价值和实际应用,非常方便!

    lpc55-pac:用于恩智浦LPC55微控制器的外围访问板条箱(即,SVD包装器)

    此板条箱的目的是使用Rust编写的嵌入式程序或库可以访问LPC55微控制器的全部功能。 状态 功能和由使用。 欢迎补丁! 该PAC当前基于用于LPC55S6x(core0)的SDK v2.7.0 SVD,芯片家族成员之间的差异将在HAL中建模。...

    phase-0-pac-3-intro-to-functions

    JavaScript函数简介 学习目标 编写和调用JavaScript函数 ...)您将在index.js文件中编写代码,并在终端中输入node index.js来运行它。 编写和调用JavaScript函数 到目前为止,我们的程序包括将单独的代码行直接

    phase-0-pac-3-what-is-a-test

    用Javascript测试学习目标了解有关在JavaScript中进行测试的信息介绍您将在此程序中完成的许多实验都使用测试。 通过测试可以验证您编写的代码是否符合预期并... 在Visual Studio Code中打开文件。 (如果您使用其他文

    phase-0-pac-3-arithmetic-lab

    在Visual Studio Code中打开文件。 (如果使用其他文本编辑器,则命令将有所不同。)最后,运行npm install安装实验室的依赖项。 在阅读本课程时,您将要添加解决方案到index.js 。 您将总共编写八个功能。 使用...

    phase-0-pac-3-function-parameters-lab

    您将在index.js文件中编写代码,并通过在终端中运行npm test来运行npm test 。定义使用参数的函数说明:定义一个函数调用introduction ,它定义的参数name ,并返回了一句:“嗨,我的名字是#{name}的”定义使用两...

    runet-censorship-bypass:在俄罗斯绕过审查的Chrome扩展

    如果您取消加星标,请为什么这么做。 俄罗斯对PAC脚本的审查 ...PAC脚本是一个JavaScript文件,在每个URL请求上触发,该文件指示浏览器针对该特定URL使用哪个代理(如果有)。 Chrome扩展程序在浏览器设置

    gldoteater:C ++游戏

    食人鱼Pac克隆要求Windows XP或以上安装这是您想要的文件: 此处的地图编辑器:关键字词Windows 32 API 2人2人联网C ++ 的OpenGL 国防部促进TCP / UDP 吉特Visual Studio社区先用Dev-C ++,再用WxDev-C ++,再用...

    CodeLite,一个用C ++编写的跨平台C / C ++ / PHP和Node.js IDE-C/C++开发

    什么是CodeLite? ...)上运行效果最佳。...可以从我们的下载页面下载适用于Windows,macOS和Linux的二进制...有关更多信息,请参见:官方网站下载页面Wiki在Linux上构建CodeLite要在您的计算机上构建CodeLite,您需要这些pac

    The-chat-room:Python 版的多人聊天室, 图形界面版

    使用Python3编写的聊天室 功能简介: 群聊功能: 确保端口打开即可多台电脑聊天 私聊功能: 给指定用户发消息 查看在线用户功能: 可以查看当前在线用户 上传下载功能: 用户可以从文件服务器上传下载文件 发送表情和图片...

    Schumix2:Schumix2 C#IRC Bot和框架

    舒米克斯2 平台 配置 建置状态 资料下载 的Ubuntu 除错 没有任何 视窗 ... 使用Monodevelop / Xamarin Studio时,需要gettext来翻译语言文件。 下载并安装。 http://gnuwin32.sourceforge.net/pac

    欧拉公式求圆周率的matlab代码-Euler:Swift语言的开源计算框架

    用Swift编写的计算框架 欧拉(Euler)是一个数学框架,其中包含大量有用的数学函数。 它由大多数数学领域的功能组成,例如代数,数论,统计等。它旨在帮助您将计算机变成数学专家。 链接 说明文件: 安装 您可以使用...

Global site tag (gtag.js) - Google Analytics