自动生成百度云加速IP白名单

百度云加速的ip段非常之多,官方给了一个帖子来列出这些ip,获取起来十分不便。
倍感痛苦的我,最终还是决定写个PHP脚本自动更新Nginx的real_ip规则。其他规则也可以参考修改。

最新源码参看:https://github.com/anrip/baidu-yunjiasu-ip

<?php
bdip = read_ip_list('https://ticket-baidu.kf5.com/posts/view/148628');cfip = read_ip_list('https://www.cloudflare.com/ips-v4');
list = array_merge(bdip, cfip);

make_nginx_real_ip_conf(list);

///////////////////////////////////////////////////////////

function make_nginx_real_ip_conf(list) {
    foreach(list as &ip) {ip = "set_real_ip_from {ip};";
    }text = implode("\n", list);
    file_put_contents('nginx_real_ip.conf',text);
}

function read_ip_list(site) {html = file_get_contents(site);
    if(!preg_match_all('/\d+\.\d+\.\d+\.\d+\/\d+/',html, list)) {
        exit("读取远程数据失败: {site}\n");
    }
    return sort_ip_list(list[0]);
}

function sort_ip_list(list) {
    rets = array();
    foreach(array_unique(list) as val) {ip = ip2long(explode('/', val)[0]);ip = sprintf('%u', floatval(ip));rets[ip] =val;
    }
    ksort(rets);
    return array_values(rets);
}

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注