google-code-export / wallproxy-plugins

Automatically exported from code.google.com/p/wallproxy-plugins
0 stars 0 forks source link

怎样为整个局域网提供AtuoProxy代理呢 #383

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
为整个局域网提供代理会了
server_extra_option = {
    'listen': ('', 8087),
    'keep_alive': True,
}
但是不知道怎么加入Autoproxy的规则判断
请大侠指点!

另外,"关于"中的说明部分是不是已经过期了呢? 
感觉和现在1.0.8的配置文件不配套啊!

Original issue reported on code.google.com by lon91...@gmail.com on 17 Jun 2012 at 2:36

GoogleCodeExporter commented 9 years ago
帐号之前不知为啥被封了,现在试了下居然可以了。
好久没维护了,差不多都忘了,果然是很难用,大概是这样��
�,在proxy.conf最下面加入以下内容:

autoproxy = autoproxy[0]
__del__.remove('autoproxy')
def find_http_handler(method, url, headers):
    if url.hostname in ('127.0.0.1', 'localhost'): return rawproxy[0]
    if type(autoproxy) == dict:
        return gaeproxy
    if autoproxy('PROXY 127.0.0.1:8086; DIRECT', url):
        port = url.port
        if 80<=port<=90 or 440<=port<=450 or port>=1024:
            return gaeproxy
    return rawproxy[0]

Original comment by dtma...@163.com on 17 Jun 2012 at 4:04

GoogleCodeExporter commented 9 years ago
可以接受一些代码的作用吗?
autoproxy = autoproxy[0]
__del__.remove('autoproxy')
def find_http_handler(method, url, headers):
    if url.hostname in ('127.0.0.1', 'localhost'): return rawproxy[0]   #这个应该是判断无需代理的IP
#如果想表示一段IP,比如192.168.1.1-255该怎么表示呢? 192.168.1.* 
可以吗?
    if type(autoproxy) == dict:  
        return gaeproxy
    if autoproxy('PROXY 127.0.0.1:8086; DIRECT', url):
        port = url.port
        if 80<=port<=90 or 440<=port<=450 or port>=1024:
            return gaeproxy
    return rawproxy[0]
#代码中并没有提到对PAC文件的解析啊,这部分难道是自动的?

Original comment by lon91...@gmail.com on 18 Jun 2012 at 2:29

GoogleCodeExporter commented 9 years ago
#内部有以下代码:
autoproxy = {}
autoproxy['PROXY 127.0.0.1:8086; DIRECT'] =[
['http://autoproxy-gfwlist.googlecode.com/svn/trunk/gfwlist.txt','http://127.0.0
.1:8086'],
'file://userlist.ini']
autoproxy = autoproxy, 'proxy.pac'; __del__.add('autoproxy')
#autoproxy如果是一个dict,就不生成PAC,而是解析规则,通过if 
autoproxy(key, url)的方式判断是否需要代理;
#autoproxy如果后面加了(一个或多个)文件名变成一个tuple,��
�生成PAC保存到文件,无法通过autoproxy判断;
#因为不生成PAC时初始化后autoproxy变量不再需要,所以可__del__
.add('autoproxy')预删除该变量(其实这样很不好);
#所以如果想要不使用PAC而是通过内部判断,就需要把tuple变��
�dict,并不要删除该变量
autoproxy = autoproxy[0]
__del__.remove('autoproxy')

def host2ip(url):
    ipv4, ipv6 = url.ip
    return ipv4 and ipv4[0] or '', ipv6 and ipv6[0] or ''

def find_http_handler(method, url, headers):
    if url.hostname in ('127.0.0.1', 'localhost'): return rawproxy[0]   #这个应该是判断无需代理的IP
    #如果想表示一段IP,比如192.168.1.1-255该怎么表示呢? 192.168.1.* 可以吗?
    #这里的hostname是用于控制允许访问的网站的,如果需要把hostname解析成ip,可以用:ipv4, ipv6 = url.ip
    #ipv4, ipv6都是list,如果无法解析的话就是[],有多个的话就形如['1.1.1.1', '2.2.2.2']
    #如果只需要一个的话,可以加入上面的host2ip函数:ipv4, ipv6 = host2ip(url),返回形如'1.1.1.1' 或 ''
    #至于判断,简单的可以ipv4.startswith('192.168.1.'),复杂的用socket.inet_aton转换成数字再判断,不过并不推荐解析成IP
    #如果你需要控制的是哪些客户端ip可以使用代理的话,如果需要允许整个局域网,不需要任何处理,因为公网在没做
    #虚拟服务器或DMZ等规则时是无法访问到内网的,如果想允许部分ip,见下面check_client。

    #autoproxy插件初始化时有点小冲突,所以要判断下type
    if type(autoproxy) == dict:  
        return gaeproxy

    if autoproxy('PROXY 127.0.0.1:8086; DIRECT', url):
        port = url.port
        if 80<=port<=90 or 440<=port<=450 or port>=1024:
            return gaeproxy
    return rawproxy[0]

def check_client(ip, reqtype, args):
    if ip in ('192.168.1.110', '192.168.1.111'): #拒绝.110 .111使用
        return False
    return True #允许其他情况

#总之现在再看,我也觉得是很难用的,如果发布新版本的话�
��肯定会大调整,不过暂时还没啥时间。

Original comment by dtma...@163.com on 18 Jun 2012 at 2:21

GoogleCodeExporter commented 9 years ago
多谢指点了! 多谢了!
还需要好好消化消化!

Original comment by lon91...@gmail.com on 19 Jun 2012 at 7:18