??xml version="1.0" encoding="utf-8" standalone="yes"?>网络捕鱼棋牌游戏大全http://www.oiklr.tw/alex/category/13156.html不求多得,只求一? about java,hibernate,spring,design,database,linux,etc. <br/><br/> 最q关心的内容关键?web快速开发方案,建模,workshop studio,Ajax zh-cnTue, 27 Feb 2007 14:56:04 GMTTue, 27 Feb 2007 14:56:04 GMT60[转]自动代理脚本的函数说明与应用http://www.oiklr.tw/alex/archive/2006/07/21/59418.htmlAlexAlexFri, 21 Jul 2006 06:57:00 GMThttp://www.oiklr.tw/alex/archive/2006/07/21/59418.htmlhttp://www.oiklr.tw/alex/comments/59418.htmlhttp://www.oiklr.tw/alex/archive/2006/07/21/59418.html#Feedback0http://www.oiklr.tw/alex/comments/commentRss/59418.htmlhttp://www.oiklr.tw/alex/services/trackbacks/59418.htmlkey words:自动脚本 代理脚本 代理 冲出H子

本文献给那些对自动代理脚本有兴趣、想自己写的朋友?br />
1、什么是代理脚本(PAC)
 一个PAC文g其实是一个文本文Ӟ最单的格式是包含一个叫FindProxyForURL?br />  JScript函数QIE通过传入两个变量来调用这个函敎ͼ一个是用户览的地址URL全\l,
 一个是q个URL中的L名部?host)。这个FindProxyForURL函数有三U可能的字符?br />  q回|一?DIRECT"Q就是直接连接,不通过代理Q二?PROXY proxyaddr:port"Q?br />  其中proxyaddr和port分别是代理的地址和代理的端口Q三?SOCKS socksaddr:port"Q?br />  其中socksaddr和port分别是socks代理的地址和端口,一个自动代理文件可以是多个
 选择的组合,其中用分?;)隔开Q如Q?br />    
   function FindProxyForURL(url,host)
   {
     if (host == "www.mydomain.com")
         return "DIRECT";
 
         return "PROXY myproxy:80;
                 PROXY myotherproxy:8080; 
                 DIRECT";
   }
   
   
2、下面是代理脚本可能用到的函数和说明Q?br /> PAC Helper Functions

dnsDomainIs(host, domain)              Returns true if the host is part of the
                                       specified domain, false otherwise.
 
isInNet(hostname,                      Resolves the hostname and subnet IP,
                                       subnet mask) returns true if the
                                       hostname is within the subnet specified
                                       by the IP address and the subnet mask,
                                       false otherwise.
 
isPlainHostName(host)                  Returns true if there are no dots in the
                                       hostname, false otherwise.
 
isResolvable(host)                     Internet Explorer tries to resolve the
                                       hostname through DNS and returns true if
                                       successful, false otherwise.
 
localHostOrDomainIs                    Returns true if the host matches (host,
                                       domain) the host portion of the domain,
                                       or if the host matches the host and
                                       domain portions of the domain, false
                                       otherwise. (Executed only for URLs in
                                       the local domain.)
 
dnsDomainLevels(host)                  Returns the number of dots in the
                                       hostname.
 
dnsResolve(host)                       Returns a string containing the IP
                                       address of the specified host.
 
myIPAddress( )                         Returns a string containing the local
                                       machine’s IP address.
 
shExpMatch(url, shexp)                 Returns true if the supplied URL matches
                                       the specified shell expression, false
                                       otherwise. 
 
dateRange(parmList)                    Returns true if the current date falls
                                       within the dates specified in parmList,
                                       false otherwise. 
 
timeRange(parmList)                    Returns true if the current time falls
                                       within the times specified in parmList,
                                       false otherwise. 
 
weekdayRange(parmList)                 Returns true if today is within the days
                                       of the week specified in parmList, false
                                       otherwise. 

3、下面是各个函数应用的例子:
  a、isPlainHostName(host)Q本例演C判断是否ؓ本地LQ如http://myservername/
  的方式访问,如果是直接连接,否则使用代理
  function FindProxyForURL(url, host)
  {
    if (isPlainHostName(host))
      return "DIRECT";
    else
      return "PROXY proxy:80";
  }
  
  b、dnsDomainIs(host, "")、localHostOrDomainIs(host, "")Q本例演C判断访问主?br />   是否属于某个域和某个域名Q如果属?company.com域的L名,而域名不?br />   www.company.com和home.company.com的直接连接,否则使用代理讉K?br />   function FindProxyForURL(url, host)
  {
    if ((isPlainHostName(host) ||
       dnsDomainIs(host, ".company.com")) &&
      !localHostOrDomainIs(host, "www.company.com") &&
      !localHostOrDomainIs(host, "home.company.com"))

      return "DIRECT";
    else
      return "PROXY proxy:80";
  }
  
  c、isResolvable(host)Q本例演CZ机名能否被dns服务器解析,如果能直接访问,?br />   则就通过代理讉K?br />   function FindProxyForURL(url, host)
  {
    if (isResolvable(host))
      return "DIRECT";
    else
      return "PROXY proxy:80";
  }
  
  d、isInNet(host, "", "")Q本例演C问IP是否在某个子|内Q如果是q接访问,
  否则通过代理Q例子演C问清华IPD늚主页不用代理?br />   function FindProxyForURL(url, host)
  {
    if (isInNet(host, "166.111.0.0", "255.255.0.0"))
      return "DIRECT";
    else
      return "PROXY proxy:80";
  }
  
 e、shExpMatch(host, "")Q本例演C根据主机域名来改变q接cdQ本C机?.edu?br />   *.com分别用不同的q接方式?br />   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";
    else
      return "PROXY proxy:80";
  }
  
 f、url.substring()Q本例演C根据不同的协议来选择不同的代理,http、https、ftp?br />   gopher分别使用不同的代理?br />   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";
      }
  }
  
  g、dnsResolve(host)Q本例演C判断访问主机是否某个IPQ如果是׃用代理,否则?br />   接连接?br />   unction FindProxyForURL(url, host)
  {
      if (dnsResolve(host) == "166.111.8.237") {
        return "PROXY secproxy:8080";
      }
      else {
        return "PROXY proxy:80";
      }
  }
  
  h、myIpAddress()Q本例演C判断本地IP是否某个IPQ如果是׃用代理,否则直接?br />   用连接?br />   function FindProxyForURL(url, host)
  {
      if (myIpAddress() == "166.111.8.238") { 
        return "PROXY proxy:80";
      }
      else {
        return "DIRECT";
      }
  }
  
  i、dnsDomainLevels(host)Q本例演C问主机的域名U数是几U,是域名有几个点
  如果域名中有点,通过代理讉KQ否则直接连接?br />   function FindProxyForURL(url, host)
  {
      if (dnsDomainLevels(host) > 0) { // if number of dots in host > 0
        return "PROXY proxy:80";
      }
        return "DIRECT";
  }
  
  j、weekdayRange()Q本例演C当前日期的范围来改变用代理,如果是GMT旉周三
  到周六,使用代理q接Q否则直接连接?br />   function FindProxyForURL(url, host)
  {
    if(weekdayRange("WED", "SAT", "GMT")) 
     return "PROXY proxy:80";
    else 
     return "DIRECT";
  }
  
  k、最后一个例子是演示随机使用代理Q这样可以好好利用代理服务器?br />  function FindProxyForURL(url,host)
 {
      return randomProxy();
 }
 
 function randomProxy()
 {
     switch( Math.floor( Math.random() * 5 ) )
     {
         case 0:
             return "PROXY proxy1:80";
             break;
         case 1:
             return "PROXY proxy2:80"; 
             break;
         case 2:
             return "PROXY proxy3:80";
             break;
         case 3:
             return "PROXY proxy4:80";
             break;
         case 4:
             return "PROXY proxy5:80";
             break;
     }    
 }
 
利用上面的函数和例子说明Q大家就可以写出比较复杂有效的自动代理脚本?/font>

Alex 2006-07-21 14:57 发表评论
]]>
安装匿名代理l过GFWhttp://www.oiklr.tw/alex/archive/2006/07/17/58525.htmlAlexAlexMon, 17 Jul 2006 03:01:00 GMThttp://www.oiklr.tw/alex/archive/2006/07/17/58525.htmlhttp://www.oiklr.tw/alex/comments/58525.htmlhttp://www.oiklr.tw/alex/archive/2006/07/17/58525.html#Feedback0http://www.oiklr.tw/alex/comments/commentRss/58525.htmlhttp://www.oiklr.tw/alex/services/trackbacks/58525.htmlWindows
  • 下蝲q安?Tor & Privoxy
    http://www.vidalia-project.net/dist/vidalia-bundle-0.1.1.21-0.0.5.exe
    安装完之后,在localhost:8118有http代理Qprivoxy提供Q,localhost:9050有socks5代理(tor提供)
    如果q时候可以配|Firefox使用8118?050q两个端口,那就所有的Internet讉K都将通过tor讉KQ会很慢。所以这U方式不推荐Q要自己~辑一下代理配|脚?br />Proxy settings in Firefox
  • ~辑proxy.pac
    可以在某个地方创Z理配|脚? 比如说c:\proxy.pac, 下面是我用的内容, 可以上一些比较常用的|站, 比如wikipedia和google|页快照. 如果查询google也经常有问题, 可以把第一?nosite.google.com Ҏ .google.com 记得google.com前面有个? q样所有访问google的请求都会通过代理Q不q做好心理准备,会很?
    function FindProxyForURL(url, host)
    {
    url = url.toLowerCase();
    host = host.toLowerCase();

    if(dnsDomainIs(host,"nosite.google.com")) return "PROXY localhost:8118";
    else if(dnsDomainIs(host,".blogspot.com")) return "PROXY localhost:8118";
    else if(dnsDomainIs(host,".wordpress.com")) return "PROXY localhost:8118";
    else if(dnsDomainIs(host,"wikipedia.org")) return "PROXY localhost:8118";
    else if(shExpMatch(url,"*q=cache:*")) return "PROXY localhost:8118";
    else return "DIRECT";
    }
  • 配置IE使用代理配置脚本
    上面那个Firefox配置界面中,选择Aotumatic proxy configuration URL, 填入
    file://c:/proxy.pac

    IE的配|类|每次重新修改proxy.pacQ都应该C面的界面Reload代理配置脚本(比较讨厌Q好在这个文件修ҎC会很?

Debian Linux

q里主要讲Debian下的安装配置Q其他版本的Linux可以参考tor?a href="http://tor.eff.org/docs/tor-doc-unix.html.en">官方说明

  • 安装 tor privoxy
  •  apt-get install tor privoxy
  • 配置privoxy
  • Debian下面的privoxy需要额外的配置Q因为privoxy需要用tor提供?050 socks5端口Q具体是配置/etc/privoxy/configQ加一?

    forward-socks4a / localhost:9050 .

    不要漏掉最后的点.然后重v一下privoxy

    /etc/init.d/tor restart
  • 如果使用FirefoxQ剩下的配置可以参考Windows下面的配|方?/li>

参?/h2>

http://www.linuxsir.org/bbs/showthread.php?t=232436
http://tor.eff.org/docs/tor-doc-win32.html.en

Technorati Tags: , ,



Alex 2006-07-17 11:01 发表评论
]]> 2013粶Ϸ 11ѡ5ͼ GPKǮͷֺʱ ɽ10ͼɲʵ Կֱֳ 4ʿ¼ ƱȺ 3רƼһţ 22ѡ5нͽ ɹ11ѡ5© 76vsʿʷս 7Dz84 һţƱƻ ʲôֻ׬Ǯĺ÷ 12 ͨţţйͼ