1. 程式人生 > >PAC (proxy auto-config) 自動代理

PAC (proxy auto-config) 自動代理

代理是個好東西,幫你節省時間,減少麻煩。今天講一個自動代理檔案格式-PAC,它是微軟發明的,1999年就提交到了IETF標準化組織,但後來就沒有下文了,好在常見的瀏覽器(Firefox,IE,Safari)都實現了對PAC支援。利用PAC我們可以對某些特定站點或移動到特定的網路時選擇特定的代理伺服器來瀏覽網頁,這解決了很多時候的不便利。

PAC的語法很簡單,下面就是一個例子:

function FindProxyForURL(url, host) {
if (
 shExpMatch(url,"*.mitbbs.com*") ||
 shExpMatch(url,"*.pandora.com*") ||
 shExpMatch(url,"*.popyard.org*") ||
 shExpMatch(url,"*.wordpress.com*") ||
 shExpMatch(url,"*.bullogger.com*")
 )
 {
 return "SOCKS localhost:1080";
 }

 return "DIRECT";
}

Proxy Auto Config

什麼是 Proxy Auto Config

首先,我們一定要知道什麼是 Proxy?他的功用是什麼?如果還不知道,可以參照這份檔案 PAC(Proxy Auto Config) 又是什麼呢?它實際上是一個 Script;經由編寫這個 Script,我們可以讓系統判斷在怎麼樣的情形下,要利用哪一臺 Proxy 來進行聯機。這樣做主要的好處有:

1.分散 Proxy 的流量,避免 Proxy Server 負載過高

2.針對個別條件設定、加快瀏覽速度

3.設定要求順序,在某臺 Proxy 無法聯機時,可自動嘗試別種聯機方式

Proxy Auto Config File

的格式

基本上 Proxy Auto Config File(以下簡稱 PAC)是一個純文字檔案,他的語法採用 JavaScript;所以建議要學習編寫 PAC 的人,最好先學習基本的 JavaScript。一個 PAC 檔必需是單獨的 JavaScript,其中不能包含任何 HTML 標籤。

PAC 檔中,一定要定義 Function FindProxyForURL 如下:

function FindProxyForURL( url, host )

{

...

}

如果使用了 PAC 檔,則瀏覽器在接受我們要求的網址後,會去執行

ret = FindProxyForURL( url, host );

這樣的指令。其中,url 是所要求網址的完整路徑,host 是對方的計算機名稱(就是在 :// / 之中的部份);而 return ret 則是 Proxy 的組態,它的格式有下列三種:

·DIRECT直接聯機而不透過 Proxy

·PROXY host:port使用指定的 Proxy 伺服機

·SOCKS host:port使用指定的 Socks 伺服機

比如說當瀏覽器得到的是 Proxy proxy.ncu.edu.tw:3128; Proxy proxy.csie.ncu.edu.tw:3128; DIRECT的話,那瀏覽器會先嚐試透過 proxy.ncu.edu.tw 來開啟網頁,如果無法使用,則嘗試 proxy.csie.ncu.edu.tw,還是不行的話,就直接聯機。

PAC 中特別的 Function

PAC 中,除了可以使用一般 JavaScript Function 外,它還定義了一些特別的 Function 可以使用:

host由網址取得的主機名稱。

Function 會判斷 host 是否為不包含網域 (Domain)。如果是,則 return true;如果包含,則 return false

範例:

1.isPlainHostName("www") return true

2.isPlainHostName("www.netscape.com") return false

host由網址取得的主機名稱。
domain
指定的網域。

Function 會判斷 host 是否屬於網域 domain。如果是,則 return true;否,則 return false

範例:

1.dnsDomainIs("www.netscape.com", ".netscape.com") return true

2.dnsDomainIs("www", ".netscape.com") return false

3.dnsDomainIs("www.mcom.com", ".netscape.com") return false

host由網址取得的主機名稱。
hostdom
完整的網域名稱。

Function 會判斷 host 是否為 hostdom,或 host 是否為 hostdom 的主機名稱。如果是,則 return true;否,則 return false

範例:

1.localHostOrDomainIs("www.netscape.com", "www.netscape.com") return true (完全相同)

2.localHostOrDomainIs("www", "www.netscape.com") return true (主機名稱相同)

3.localHostOrDomainIs("www.mcom.com", "www.netscape.com") return false (網域不同)

4.localHostOrDomainIs("home.netscape.com", "www.netscape.com") return false (主機名稱不同)

host由網址取得的主機名稱。

Function 會嘗試透過 DNS 去解析 host,如果解析成功,則 return true;否則 return false

範例:

1.isResolvable("www.netscape.com") return true (除非 DNS 無法正常運作)

2.isResolvable("bogus.domain.foobar") return false (除非真的冒出這個 domain 出來

host主機名稱,可以是 Domain Name IP。如果是 Domain Name,則會透過 DNS 查出 IP
pattern IP

mask
對應於 pattern 的遮蔽。

Function host 是否在指定的 IP 範圍內,如果是,則 return true;否則 return false

範例:

1.isInNet(host, "198.95.249.79", "255.255.255.255") host 198.95.249.79 時,會 return true

2.isInNet(host, "140.115.0.0", "255.255.0.0") host 140.115.*.* 時,會 return true

host要透過 DNS 解晰的主機名稱。

Function 會透過 DNS 去解析 hostreturn 值即為解析之結果。

相關推薦

PAC (proxy auto-config) 自動代理

代理是個好東西,幫你節省時間,減少麻煩。今天講一個自動代理檔案格式-PAC,它是微軟發明的,1999年就提交到了IETF標準化組織,但後來就沒有下文了,好在常見的瀏覽器(Firefox,IE,Safari)都實現了對PAC支援。利用PAC我們可以對某些特定站點或移動到特定的網

[瘋狂Java]代理伺服器:Proxy代理連線)、ProxySelector(自動代理選擇器)、預設代理選擇器

1. 代理伺服器:     1) 英文就叫Proxy,即代替使用者去連線想要的網站並獲取資訊;     2) 一般主流的商業瀏覽器都提供代理的功能,即你可以先設定一個代理伺服器,那麼接下來所有的上網都是通過該指定的代理伺服器完成;     3) 一旦設定好了代理伺服器,那麼

自動代理生成器

代理 odi log ont service test lan iso obj public interface ISomeService { public void doSome(); public void dade(); } public int

SSM-Spring-14:Spring中默認自動代理DefaultAdvisorAutoProxyCreator

ssp ins iso .so str log mapped ger service ------------吾亦無他,唯手熟爾,謙卑若愚,好學若饑------------- 默認自動代理DefaultAdvisorAutoProxyCreator 本處沒有

Spring(九)Spring中的兩種自動代理

創建 for 工廠 update lns 實體 dem create path 這裏說的自動代理說的是自動代理bean對象,就是說在xml中不用再配置代理工廠,就可以自動代理 下面來說第一種 第一種自動代理:默認自動代理生成器(DefaultAdvisorAutoProxy

python掃描proxy並獲取可用代理ip列表

[1] randint XP self. 希望 agen 不可用 今天 只需要 mac或linux下可以work的代碼如下: # coding=utf-8 import requests import re from bs4 import BeautifulSoup

運用 node + express + http-proxy-middleware 實現前端代理跨域的 詳細實例哦

管理工具 and 訪問 ext pub 文件夾 破解 next() 包管理 一、你需要準備的知識儲備 運用node的包管理工具npm 安裝插件、中間件的基本知識; 2.express框架的一些基礎知識,知道如何建立一個小的服務器;曉得如何快速的搭建一個express框架小

Spring Boot(16) Auto-configuration(自動配置)

16.Auto-configuration(自動配置) 1.Spring Boot自動配置嘗試根據您新增的jar依賴項自動配置Spring應用程式。例如,如果 HSQLDB在您的類路徑上,並且您尚未手動配置任何資料庫連線bean,那麼我們將自動配置記憶體資料庫。 2.您需要

Spring 顧問 自動代理

[java]  view plain  copy public interface IDog1 {   &n

使用包掃描和註解配合實現rmi客戶端介面自動代理

1、原理:模仿spring-mybatis的mapperscan方式實現包掃描和rmi客戶端自動代理 2、spring代理rmi服務的程式碼: RmiProxyFactoryBean bean = new RmiProxyFactoryBean(); bean.

(轉)redsocks2 自動代理設定

https://cloud.tencent.com/info/497d16afc72e0416ec60f377fd7fa246.html redsock2 可以把一些不支援透明代理的代理伺服器重定向一下,這樣可以實現透明代理了 redsock2安裝很簡單直接make就可以了, ubunt

Java Proxy 和 CGLIB 動態代理原理

動態代理在Java中有著廣泛的應用,比如Spring AOP,Hibernate資料查詢、測試框架的後端mock、RPC,Java註解物件獲取等。靜態代理的代理關係在編譯時就確定了,而動態代理的代理關係是在編譯期確定的。靜態代理實現簡單,適合於代理類較少且確定的情況,而動態代

[轉載]Java Proxy 和 CGLIB 動態代理原理

來源:CarpenterLee , www.cnblogs.com/CarpenterLee/p/8241042.html 動態代理在Java中有著廣泛的應用,比如Spring AOP,Hibernate資料查詢、測試框架的後端mock、RPC,Java註解物

解決Proxy.newProxyInstance建立動態代理導致型別轉換錯誤的問題

在使用Proxy.newProxyInstance建立動態代理時,有時會導致型別轉換錯誤。 package cn.itcast.demo; import java.io.InputStream; import java.io.PrintWriter; import jav

【框架】[Spring]AOP攔截-三種方式實現自動代理

這裡的自動代理,我講的是自動代理bean物件,其實就是在xml中讓我們不用配置代理工廠,也就是不用配置class為org.springframework.aop.framework.ProxyFactoryBean的bean。 總結了一下自己目前所學的知識

WinHTTP 自動代理支援

To ease the configuration of proxy settings, WinHTTP 5.1 implements the Web Proxy Auto-Discovery (WPAD) protocol, also known as autoproxy

Spring的AOP自動代理(含AspectJ的AOP開發)

1.自動代理:  上面這兩種代理的方式不好,需要為每一個類配置一個獨立的ProxyFactoryBean.(如果需要代理的類特別的多,每個類都需要建立一個代理的類.) 根據切面Advisor的定

shiro 的整合許可權專案,利用SpringMVC aop 自動代理將系統必要監控操作寫入資料庫

1) 底層配置 通過配置織入@Aspectj切面 雖然可以通過程式設計的方式織入切面,但是一般情況下,我們還是使用spring的配置自動完成建立代理織入切面的工作。 通過aop名稱空間的宣告自動為spring容器中那些配置@aspectJ切面的bean建立

oslo.config 自動生成示例檔案

https://blog.apporc.org/2016/08/python-%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86%EF%BC%9Aoslo-config/ oslo.config 是用於從命令列或配置檔案解析配置引數的框架,來自於

InvocationHandler和Proxy(Class)的動態代理機制詳解

在學習Spring的時候,我們知道Spring主要有兩大思想,一個是IoC,另一個就是AOP,對於IoC,依賴注入就不用多說了,而對於Spring的核心AOP來說,我們不但要知道怎麼通過AOP來滿足的我們的功能,我們更需要學習的是其底層是怎麼樣的一個原理,而AOP的原理就