前几天把浏览器升级了,嘛,总要与时俱进。
Opera 10.70 build 9053 是我去年用得最久的版本,一直以来也挺满意。
本来打算在 Barracuda 出来前用一小段时间 11 的,但要更新的时候刚好 11.10 就出来了,于是就跳了。。。
以前发过的 Opera 代理菜单和按钮,很多人反映部分命令在 11 下失效了。
趁此机会更新下,并综合了来自其他高手的改进。
本文只是给出方案和配置,不提供任何相关工具和网址。
这次改得比较多,我就罗嗦点。再整个介绍一次主要代理方案。
先放一张预览和示意图:
有三种模式:
注:这里的全局不是系统全局,而是整个浏览器程序,如此称呼是为了方便表达。
一般情况下,我们的需求是:
这套代理方案包含以下部分:
事实上我本来打算修复 11 以上版本无法使用的问题后,只是加上自己这段时间的做出的小调整。
但发现悲伤的采购做出了几个重量级的改进,相当让人佩服。详情见:另一个代理菜单和按钮
于是就把那些也综合进来了,那么现在这个比起以前的菜单和按钮主要改进有:
其中,“在“禁用代理 / 启用上一次使用的代理方式”之间进行一键切换”、“修复 PAC 文件路径”和后面那个“添加站点到例外列表”命令来自采儿。
感谢采儿~,我们就不用多说什么了。
“添加站点到 PAC”,方法来自:在PAC中快捷添加当前网站的规则
不过和原文提供的代码有不同之处:
在同样的思路下,有四种不同的实现方式。请根据你的情况和需求选择其一。
编辑菜单配置文件,在最后添加以下代码。
主菜单,点击展开
[Quick Proxy Menu]
;Quick Proxy Menu by A.shun & 悲伤的采购
Item, 启用自动代理=Disable proxy servers,,,,proxy_pac & Open url in new page,"opera:config" & Delay,10 & Go to page,"javascript:var allExc=opera.getPreference('Proxy','No Proxy Servers'),usePAC='proxy_type.pac',useALL='proxy_type.all';if(allExc.indexOf(usePAC)==-1 && allExc.indexOf(useALL)==-1){allExc+=','+usePAC}else if(allExc.indexOf(useALL)!=-1){allExc=allExc.replace(useALL,usePAC)}opera.setPreference('Proxy','No Proxy Servers',allExc);opera.setPreference('Proxy','Use Automatic Proxy Configuration',1);opera.setPreference('Proxy','Automatic Proxy Configuration URL',opera.getPreference('User Prefs','Opera Directory')+'tools\\pac.txt');window.close()"
Item,启用全局代理=Disable proxy servers,,,,proxy_all & Open url in new page,"opera:config" & Delay,10 & Enable proxy servers & Go to page,"javascript:var allExc=opera.getPreference('Proxy','No Proxy Servers'),usePAC='proxy_type.pac',useALL='proxy_type.all';if(allExc.indexOf(usePAC)==-1 && allExc.indexOf(useALL)==-1){allExc+=','+useALL}else if(allExc.indexOf(usePAC)!=-1){allExc=allExc.replace(usePAC,useALL)}opera.setPreference('Proxy','No Proxy Servers',allExc);opera.setPreference('Proxy','Use Automatic Proxy Configuration',0);window.close()"
------0
Item,添加为自动代理规则=External action,,,,add-pac| Stop & Focus address field & Copy & Delay,10 & Go to page,"javascript:var u=String('%c'),n=u.indexOf('://'),m=u.indexOf('/',n+3),u=u.slice(n+3,m);prompt('New PAC Rule for this Current Site','%%22'+u+'%%22,\n');void(0)" & Delay,10 & Copy & Cancel & Delay,10 & Go to Page,"PAC 文件的绝对路径" & Delay,10 & View document source & Switch to previous page & Close page,1 & Delay,10 & Next line & Next line & Next line & Paste & Delay,1 & Reload
Item, 添加域名到例外列表=External action,,,,Add widget|Duplicate page & Delay,10 & Go to page,"javascript:location.href='opera:config#'+location.hostname" & Delay,1 & Delay,350 & Go to page,"javascript:(function(){var hn=String(location.href).slice(13),allExc=opera.getPreference('Proxy','No Proxy Servers'),allExc_A=allExc.split(','),tempA=allExc.split(','),allExc_R=new RegExp(('^'+allExc+'$').replace(/\./g,'\\.').replace(/\*/g,'\.*').replace(/,/g,'$|^')),newExc;for(i=tempA.length-1;i>=0;i--){var temp1=new RegExp(('^'+tempA[i]+'$').replace(/\./g,'\\.').replace(/\*/g,'\.*'));if(!temp1.test(hn)){tempA.splice(i,1)}}newExc=(tempA.length>0)?prompt('Tips: 可使用通配符,例如 *.operachina.com。\n\n此站点已经在例外名单中,但可修改域名再添加。\n以下是和此域名匹配的已有规则:\n\n'+tempA.join('\n'),hn):prompt('将此站点添加到例外名单中。访问例外名单中的站点时将忽略代理服务器设置。'+'\n\n'+'可使用通配符,例如 *.operachina.com 。',hn);if(newExc!=null && /\S/.test(newExc)==true){if(!allExc_R.test(newExc)){var newExc_R=new RegExp(('^'+newExc+'$').replace(/\./g,'\\.').replace(/\*/g,'\.*')),old='\n',allExc_A=allExc.split(','),tempA=allExc_A;for(j=tempA.length-1;j>=0;j--){if(newExc_R.test(tempA[j])){old+=tempA[j]+'\n';tempA.splice(j,1)}} if(old=='\n'){allExc+=','+newExc}else{var left=confirm('以下旧规则已经被刚输入的新规则包含,是否仍然保留?\n'+old);allExc=(left)?allExc+','+newExc:tempA.join(',')+','+newExc}opera.setPreference('Proxy','No Proxy Servers',allExc);alert(newExc+' 添加完成')}else{var not2add=(newExc==hn)?'俺不是早说加过了嘛╮(╯﹏╰)╭':'哦...原来介个也已经加过了 ╮(╯▽╰)╭';alert(not2add)}}else{alert('添加已取消')}window.close()})()",1
Submenu, "更多设置", More Proxy Setting="Show popup menu,,,, "Menu Tools""
------1
Item,Privoxy / Polipo - 8118=Disable proxy servers,,,,p & Open url in new page,"opera:config" & Delay,10 & Enable proxy servers & Go to page,"javascript:var allExc=opera.getPreference('Proxy','No Proxy Servers'),usePAC='proxy_type.pac',useALL='proxy_type.all',proxy_all='127.0.0.1:8118';if(allExc.indexOf(usePAC)==-1 && allExc.indexOf(useALL)==-1){allExc+=','+useALL}else if(allExc.indexOf(usePAC)!=-1){allExc=allExc.replace(usePAC,useALL)}opera.setPreference('Proxy','No Proxy Servers',allExc);opera.setPreference('Proxy','Use Automatic Proxy Configuration',0);opera.setPreference('Proxy','FTP server',proxy_all);opera.setPreference('Proxy','Gopher server',proxy_all);opera.setPreference('Proxy','HTTP server',proxy_all);opera.setPreference('Proxy','HTTPS server',proxy_all);opera.setPreference('Proxy','WAIS server',proxy_all);window.close()"
Item,GAppProxy - 8000=Disable proxy servers,,,,gapp & Open url in new page,"opera:config" & Delay,10 & Enable proxy servers & Go to page,"javascript:var allExc=opera.getPreference('Proxy','No Proxy Servers'),usePAC='proxy_type.pac',useALL='proxy_type.all',proxy_all='127.0.0.1:8000';if(allExc.indexOf(usePAC)==-1 && allExc.indexOf(useALL)==-1){allExc+=','+useALL}else if(allExc.indexOf(usePAC)!=-1){allExc=allExc.replace(usePAC,useALL)}opera.setPreference('Proxy','No Proxy Servers',allExc);opera.setPreference('Proxy','Use Automatic Proxy Configuration',0);opera.setPreference('Proxy','FTP server',proxy_all);opera.setPreference('Proxy','Gopher server',proxy_all);opera.setPreference('Proxy','HTTP server',proxy_all);opera.setPreference('Proxy','HTTPS server',proxy_all);opera.setPreference('Proxy','WAIS server',proxy_all);window.close()"
Item,FG / FreeU - 8580=Disable proxy servers,,,,fg & Open url in new page,"opera:config" & Delay,10 & Enable proxy servers & Go to page,"javascript:var allExc=opera.getPreference('Proxy','No Proxy Servers'),usePAC='proxy_type.pac',useALL='proxy_type.all',proxy_all='127.0.0.1:8580';if(allExc.indexOf(usePAC)==-1 && allExc.indexOf(useALL)==-1){allExc+=','+useALL}else if(allExc.indexOf(usePAC)!=-1){allExc=allExc.replace(usePAC,useALL)}opera.setPreference('Proxy','No Proxy Servers',allExc);opera.setPreference('Proxy','Use Automatic Proxy Configuration',0);opera.setPreference('Proxy','FTP server',proxy_all);opera.setPreference('Proxy','Gopher server',proxy_all);opera.setPreference('Proxy','HTTP server',proxy_all);opera.setPreference('Proxy','HTTPS server',proxy_all);opera.setPreference('Proxy','WAIS server',proxy_all);window.close()"
Submenu, "其他代理端口", More Proxy Port="Show popup menu,,,, "Transfer Loading""
------2
Item, "召唤 Privoxy & SSH"="Execute program,"profile\tools\ssh\ssh.lnk" ,,,"p""
Item, "召唤 GAppProxy"="Execute program,"profile\tools\Gapp\proxy.exe",,,"gapp""
二级菜单 1:更多设置
[More Proxy Setting]
Item, 打开代理设置=Show preferences,22,,,Menu tools & Delay,1 & Show proxy servers
Item,手动编辑 PAC=External action,,,,Mail Draft|Go to page,"PAC 文件的绝对路径" & Delay,1 & View document source & Switch to previous page & Close page,1
------0
Item, "对指定站点忽略代理设置"=Set preference, "Proxy|No Proxy Servers Check=1",, | Set preference, "Proxy|No Proxy Servers Check=0"
Item, "为代理启用 HTTP 1.1"=Set preference, "Proxy|Enable HTTP 1.1 for proxy=1",, | Set preference, "Proxy|Enable HTTP 1.1 for proxy=0"
Item, "本地服务器不启用代理"=Set preference, "Proxy|Use Proxy On Local Names Check=0",, | Set preference, "Proxy|Use Proxy On Local Names Check=1"
------1
Item, 测试网址是否撞墙=Go to page, "http://autoproxy2pac.appspot.com/gfwtest#%u",,,"Menu Contacts"
Item, "查看当前 IP"="Go to page, "http://www.ip-adress.com/",,,"Contact0""
二级菜单 2:更多端口
[More Proxy Port]
Item,Wujie - 9666=Disable proxy servers,,,,wj & Open url in new page,"opera:config" & Delay,10 & Enable proxy servers & Go to page,"javascript:var allExc=opera.getPreference('Proxy','No Proxy Servers'),usePAC='proxy_type.pac',useALL='proxy_type.all',proxy_all='127.0.0.1:9666';if(allExc.indexOf(usePAC)==-1 && allExc.indexOf(useALL)==-1){allExc+=','+useALL}else if(allExc.indexOf(usePAC)!=-1){allExc=allExc.replace(usePAC,useALL)}opera.setPreference('Proxy','No Proxy Servers',allExc);opera.setPreference('Proxy','Use Automatic Proxy Configuration',0);opera.setPreference('Proxy','FTP server',proxy_all);opera.setPreference('Proxy','Gopher server',proxy_all);opera.setPreference('Proxy','HTTP server',proxy_all);opera.setPreference('Proxy','HTTPS server',proxy_all);opera.setPreference('Proxy','WAIS server',proxy_all);window.close()"
Item,Puff - 1984=Disable proxy servers,,,,puff & Open url in new page,"opera:config" & Delay,10 & Enable proxy servers & Go to page,"javascript:var allExc=opera.getPreference('Proxy','No Proxy Servers'),usePAC='proxy_type.pac',useALL='proxy_type.all',proxy_all='127.0.0.1:1984';if(allExc.indexOf(usePAC)==-1 && allExc.indexOf(useALL)==-1){allExc+=','+useALL}else if(allExc.indexOf(usePAC)!=-1){allExc=allExc.replace(usePAC,useALL)}opera.setPreference('Proxy','No Proxy Servers',allExc);opera.setPreference('Proxy','Use Automatic Proxy Configuration',0);opera.setPreference('Proxy','FTP server',proxy_all);opera.setPreference('Proxy','Gopher server',proxy_all);opera.setPreference('Proxy','HTTP server',proxy_all);opera.setPreference('Proxy','HTTPS server',proxy_all);opera.setPreference('Proxy','WAIS server',proxy_all);window.close()"
Item,Wallproxy - 8086=Disable proxy servers,,,,wapp & Open url in new page,"opera:config" & Delay,10 & Enable proxy servers & Go to page,"javascript:var allExc=opera.getPreference('Proxy','No Proxy Servers'),usePAC='proxy_type.pac',useALL='proxy_type.all',proxy_all='127.0.0.1:8086';if(allExc.indexOf(usePAC)==-1 && allExc.indexOf(useALL)==-1){allExc+=','+useALL}else if(allExc.indexOf(usePAC)!=-1){allExc=allExc.replace(usePAC,useALL)}opera.setPreference('Proxy','No Proxy Servers',allExc);opera.setPreference('Proxy','Use Automatic Proxy Configuration',0);opera.setPreference('Proxy','FTP server',proxy_all);opera.setPreference('Proxy','Gopher server',proxy_all);opera.setPreference('Proxy','HTTP server',proxy_all);opera.setPreference('Proxy','HTTPS server',proxy_all);opera.setPreference('Proxy','WAIS server',proxy_all);window.close()"
Item,Hyk-proxy - 48100=Disable proxy servers,,,,hyk & Open url in new page,"opera:config" & Delay,10 & Enable proxy servers & Go to page,"javascript:var allExc=opera.getPreference('Proxy','No Proxy Servers'),usePAC='proxy_type.pac',useALL='proxy_type.all',proxy_all='127.0.0.1:48100';if(allExc.indexOf(usePAC)==-1 && allExc.indexOf(useALL)==-1){allExc+=','+useALL}else if(allExc.indexOf(usePAC)!=-1){allExc=allExc.replace(usePAC,useALL)}opera.setPreference('Proxy','No Proxy Servers',allExc);opera.setPreference('Proxy','Use Automatic Proxy Configuration',0);opera.setPreference('Proxy','FTP server',proxy_all);opera.setPreference('Proxy','Gopher server',proxy_all);opera.setPreference('Proxy','HTTP server',proxy_all);opera.setPreference('Proxy','HTTPS server',proxy_all);opera.setPreference('Proxy','WAIS server',proxy_all);window.close()"
Item,Witopia - 1234=Disable proxy servers,,,,wito & Open url in new page,"opera:config" & Delay,10 & Enable proxy servers & Go to page,"javascript:var allExc=opera.getPreference('Proxy','No Proxy Servers'),usePAC='proxy_type.pac',useALL='proxy_type.all',proxy_all='127.0.0.1:1234';if(allExc.indexOf(usePAC)==-1 && allExc.indexOf(useALL)==-1){allExc+=','+useALL}else if(allExc.indexOf(usePAC)!=-1){allExc=allExc.replace(usePAC,useALL)}opera.setPreference('Proxy','No Proxy Servers',allExc);opera.setPreference('Proxy','Use Automatic Proxy Configuration',0);opera.setPreference('Proxy','FTP server',proxy_all);opera.setPreference('Proxy','Gopher server',proxy_all);opera.setPreference('Proxy','HTTP server',proxy_all);opera.setPreference('Proxy','HTTPS server',proxy_all);opera.setPreference('Proxy','WAIS server',proxy_all);window.close()"
Item,Gtunnl - 8081=Disable proxy servers,,,,gtu & Open url in new page,"opera:config" & Delay,10 & Enable proxy servers & Go to page,"javascript:var allExc=opera.getPreference('Proxy','No Proxy Servers'),usePAC='proxy_type.pac',useALL='proxy_type.all',proxy_all='127.0.0.1:8081';if(allExc.indexOf(usePAC)==-1 && allExc.indexOf(useALL)==-1){allExc+=','+useALL}else if(allExc.indexOf(usePAC)!=-1){allExc=allExc.replace(usePAC,useALL)}opera.setPreference('Proxy','No Proxy Servers',allExc);opera.setPreference('Proxy','Use Automatic Proxy Configuration',0);opera.setPreference('Proxy','FTP server',proxy_all);opera.setPreference('Proxy','Gopher server',proxy_all);opera.setPreference('Proxy','HTTP server',proxy_all);opera.setPreference('Proxy','HTTPS server',proxy_all);opera.setPreference('Proxy','WAIS server',proxy_all);window.close()"
菜单和按钮命令都是一样的,有4种不同的执行方式。
这里限于篇幅问题,给出的代码是通用性最强的第一种方式。(不折腾的话直接跳到下一段)
你可以把代码中的:Open url in new page
批量替换为下面的:(分别对应三种方式)
New private page & Go to page
New browser window & Minimize window & Go to page
New private browser window & Minimize window & Go to page
PAC 文件是个好东西,你可以在网上下载到,但这里还是建议你自己维护一个。
加上常去的几个站点即可,简单快速。而且 PAC 是各种浏览器通用的,全部浏览器指向同一个 PAC,这点很方便。
当然,网上的 list 对不喜欢折腾的人真的很方便,但由于 Opera 10.50+ 某个长期未修复的 bug,啊咧。。。
好吧,这里给出一种感觉不错的 PAC 写法。
(要使用菜单中的“添加到自动代理规则”必须配合 pac 的内容进行修改,用我这种语法的话就不用改了。)
如何修改就看里面的注释吧。
点此获取 PAC 文件写法
function FindProxyForURL(url, host){
var Proxy="PROXY 127.0.0.1:8118;PROXY 127.0.0.1:8000;PROXY 127.0.0.1:8580";//代理类型、IP、端口,多个用分号分隔
var list = new Array( //使用自动代理的网站列表 Begin
//上面是新增的列表
"twitter.com",
"twimg.com",
"youtube.com",
"ytimg.com"
//使用自动代理的网站列表 End
);
for (i in list) {
if(shExpMatch(url.toLowerCase(),"*" + list[i].toLowerCase() + "*")){return Proxy;};
};
return "DIRECT";
};
当然,这种写法还是需要自己做确认,可以适当添加点和斜杠进行优化。其他 PAC 写法自己去网上搜索吧。
注意:主菜单绿色标注的 Next line & Next line & Next line 表示在 pac 文件的第三行中粘贴新规则,根据 PAC 文件的不同做适当修改。
先下载这个图标包(17.2kb,内有17枚)。 Google code | OC 附件
把解压后的 proxy 文件夹放到你当前使用的皮肤里面。
并编辑皮肤包中的 skin.ini,在 [Image] 段的后面添加以下代码。
点此获取代理图标的代码
;--- Quick Proxy by A.shun ---
wj=proxy/wj.png
fg=proxy/fg.png
tor=proxy/tor.png
puff=proxy/puff.png
gtu=proxy/gtu.png
gapp=proxy/gapp.png
fu=proxy/fu.png
p=proxy/p.png
proxo=proxy/proxo.png
wito=proxy/wito.png
hyk=proxy/hyk.png
wapp=proxy/wapp.png
proxy_all=proxy/proxy_all.png
proxy_auto=proxy/proxy_auto.png
proxy_no=proxy/proxy_no.png
proxy_pac=proxy/proxy_pac.png
add-pac=proxy/add-pac.png
累,贴代码和按钮真是体力活 – -
我已经尽可能详细的说明了,但是要完全不动手,类似 autoproxy 和 Proxy Switchy 之类一键安装的扩展,那目前没有。
更新:
2011.02.24 夜,初稿
2011.02.25 上午,移除菜单中一个不必要的条目,文章细微调整
容我再罗嗦几句,按钮和菜单是比较直观和便于分享的形式,但不仅限于此,你完全可以把每个动作改用快捷键或手势来执行,这也是 Opera的魅力。(当然,按钮才能显示这些状态)
还有,最近把 Gravatar 头像也换成和 Twitter (@ashunyi)上一样了,欢迎围观。
用头像缓存的同学帮我更新一下吧,普遍表示不想换- -,好吧,我可能会改评论邮箱,以前就保持原样吧。
» 转载请以超链接形式注明来源:A.shun Blog » 《Opera 自动代理解决方案和代理菜单》
» 本文链接地址:http://www.a-shun.com/archives/21451.html
© A.shun Blog 2009-2010 | 发表评论 | 阅读评论 | Twitter | 0b509d655a529f3b7820d7fb7e63fb0e