写一个IP转CIDR工具的代码 可根据需求修改获取数值
有些做网站需要用到cloudflare的加速服务,查看网站安全事件的时候,需要导出json的ip进行处理,比如复制ip到服务器防火墙进行设置屏蔽禁止这些ip访问,由于导出的文件是json格式文件,无法一键复制所有ip,在这里写一个代码获取json文件中的clientIP数值也就是IP,并且自动将IP地址转CIDR格式0/24,就是防火墙ip格式。支持一键复制。可根据需求自己修改,代码是php代码。<!DOCTYPE html>
<html>
<head>
<title>IP转CIDR工具</title>
<style>
body { font-family: Arial, sans-serif; margin: 20px; }
.container { max-width: 1200px; margin: 0 auto; }
table { border-collapse: collapse; width: 100%; margin: 20px 0; }
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
th { background-color: #f2f2f2; }
.ip-column { font-family: monospace; }
.copy-btn {
padding: 4px 8px;
background: #4CAF50;
color: white;
border: none;
cursor: pointer;
border-radius: 3px;
}
.copy-btn:hover { background: #45a049; }
</style>
</head>
<body>
<div class="container">
<h1>IP地址转CIDR格式</h1>
<?php
$url = 'json文件地址';
$data = @json_decode(file_get_contents($url), true);
if ($data && is_array($data)) {
echo "<p>共找到 " . count($data) . " 条记录</p>";
echo "<table>";
echo "<tr>
<th>序号</th>
<th>原始IP地址</th>
<th>CIDR格式</th>
<th>国家</th>
<th>动作</th>
<th>操作</th>
</tr>";
$cidrList = [];
foreach ($data as $i => $item) {
if (isset($item['clientIP'])) {
$originalIP = $item['clientIP'];
// 转换为CIDR
$cidrIP = preg_replace('/\.\d+$/', '.0/24', $originalIP);
$cidrList[] = $cidrIP;
echo "<tr>";
echo "<td>" . ($i + 1) . "</td>";
echo "<td class='ip-column'>$originalIP</td>";
echo "<td class='ip-column'>$cidrIP</td>";
echo "<td>" . ($item['clientCountryName'] ?? '') . "</td>";
echo "<td>" . ($item['action'] ?? '') . "</td>";
echo "<td><button class='copy-btn' onclick=\"copyToClipboard('$cidrIP')\">复制</button></td>";
echo "</tr>";
}
}
echo "</table>";
// 去重后的CIDR列表
$uniqueCIDRs = array_unique($cidrList);
echo "<h2>唯一CIDR列表 (" . count($uniqueCIDRs) . " 个)</h2>";
echo "<div style='background: #f5f5f5; padding: 15px; border-radius: 5px;'>";
echo "<textarea id='cidrOutput' rows='10' style='width: 100%; font-family: monospace;'>";
echo implode("\n", $uniqueCIDRs);
echo "</textarea>";
echo "<button onclick=\"copyAll()\" style='margin-top: 10px; padding: 8px 16px;'>复制所有CIDR</button>";
echo "</div>";
} else {
echo "<p style='color: red;'>无法获取或解析JSON数据</p>";
}
?>
<script>
function copyToClipboard(text) {
navigator.clipboard.writeText(text).then(() => {
alert('已复制: ' + text);
});
}
function copyAll() {
const textarea = document.getElementById('cidrOutput');
textarea.select();
navigator.clipboard.writeText(textarea.value).then(() => {
alert('已复制所有CIDR地址');
});
}
</script>
</div>
</body>
</html>
在上面的代码中需要修改两处,双引号字符串内部的双引号需要转义(使用反斜杠\),否则PHP解析器会将它们误解为字符串的结束标记。修改如下图;
运行的php文件效果图片
页:
[1]