squid 用重定向器做防盗链

380阅读 0评论2015-08-31 阿狼哥
分类:系统运维

公司有一API给第三方调用,调用后可以获取一批MP3音源的访问地址,但是不希望被枚举其他音源地址或无限期的调用。最前端是squid,基本的想法是截取访问url的一部份来拼成验证URL去访问验证API,验证成功则返回正确的URL。

squid 配置:

url_rewrite_program /usr/local/squid/etc/redirector.py

redirect_rewrites_host_header off

redirect_children 20

acl 3party url_regex -i ^\.xxxx\.cn/res/thirdparty/[0-9]{16}/

redirector_access allow 3party

redirector_access deny all


重定向器脚本:

#!/usr/bin/python -Ou

import sys

import urllib2

def modify_url(line):

    list = line.split(' ')

    old_url = list[0]

    new_url = '\n'

    key = old_url.split('/')[5]

    auth_url = '' + key


    try:

        response = urllib2.urlopen(auth_url)

        html = response.read()

    except:

        html = '0' + new_url

        pass

    

    if html == '0\n':

        new_url = old_url + new_url

    else:

        new_url = '302:' + new_url   ##失败重定向到公司首页

    return new_url

 

while True:

    line = sys.stdin.readline()

    new_url = modify_url(line)

    sys.stdout.write(new_url)

    sys.stdout.flush()

访问量不大,还不知道效率怎么样,现在的访问速度和不需验证的URL没什么差别。

上一篇:为linux的history命令加上时间
下一篇:nagios 新增的服务监控不能更新状态