自动生成百度云加速IP白名单
百度云加速的ip段非常之多,官方给了一个帖子来列出这些ip,获取起来十分不便。
倍感痛苦的我,最终还是决定写个PHP脚本自动更新Nginx的real_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);
}