|
|
有些做网站需要用到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文件效果图片
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|