proxy代理   norton 诺顿病毒库   代理列表   search FTP搜索   whois IP地理位置   blog 追求完美  
soft 软件   firefox WEB浏览器   免费域名   typeset 假古文   AntiVirus 反病毒   ipcn 站点导航  

« 2008年最新版个人所得税计算器3 (7月后有效 基数9966 公积金比例为12% 养老医保调整后) | Main | 用 iptables 解决某些时候抢先应答的 RST 造成的异常中断: 忽略RESET 保证数据畅通 »

October 18, 2008

pac 代理脚本与 IE Firefox Chrome 浏览器

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
https://windtear.net/2008/10/proxy_pac_ie_firefox_chrome.html

ipcn 提供 pac 代理服务 需要认证
然后发现来自"WinHttp-Autoproxy-Service/5.1" 请求 .pac 特别多 也不含压缩头

Google 了下发现
http://code.google.com/p/chromium/issues/detail?id=1684
http://msdn.microsoft.com/en-us/library/aa383153(VS.85).aspx
说是调用WinHttpGetProxyForUrl时把fAutoLogonIfChallenged设成false就没事了
WinHTTP AutoProxy 由于设的是 true 所以每次都去请求:(

然后又观察了 IE Firefox Chrome 等处理 pac 的情况
IE GET pac 不带压缩头 带原始的 User-Agent:
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32)
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Win32)
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Win32)
还有 Accept: */* 和 Cookie 之前如果已cache的话 还会带上 If-Modified-Since

Firefox 带的头很全 包括压缩头 Accept-Encoding: gzip,deflate 和 no-cache

Google Chrome 比较懒 不带压缩头 连 User-Agent 头都没有

pac 代理脚本这块可以用一些小技巧 比如
function FindProxyForURL(url, host)
if - else if - else
var lchost = host.toLowerCase();
var lcurl = url.toLowerCase();
(url.substring(0, 4) != "http")
isPlainHostName(host)
dnsDomainIs(host,".cn")
!isResolvable(host)
rip = dnsResolve(host);
isInNet(rip,"192.168.0.0","255.255.0.0")
(shExpMatch(host, "*sixxs.org"))
return "PROXY test.proxy.ipcn.org:3128; DIRECT";
详见 Netscape 的帮助 proxy-live.html
关于 MIME type 推荐的是 application/x-ns-proxy-autoconfig 不过 text/plain 也都干活

遇到的问题有:
如果pac下载不全 每次调用 isInNet(host, ...) 都会发起dns查询 改成rip就好了
Vista Win2003 的 WinHTTP AutoProxy 服务会每个请求都去刷 pac
Web Proxy Auto-Discovery (WPAD) protocol: (/wpad.dat)
DHCP option 252
option wpad code 252 = text;
option wpad "http://192.168.1.1/proxy.pac";

Redirect /wpad.dat http://192.168.1.1/proxy.pac

代理过程:
需认证的话 第一次返回 407(ERR_CACHE_ACCESS_DENIED)
给出 Proxy-Authenticate: Basic realm="ipcn proxy server"
认证通过后 如果不允许返回 403(ERR_ACCESS_DENIED)
如果允许则以后带上 Proxy-Authorization: Basic ... 头正常使用代理

本blog WWW

Posted by windtear at October 18, 2008 7:10 PM

本站使用中的任何问题,请与 windtear @ windtear.net 联系
Copyright© 1999-2024 Windtear. All rights reserved.