点标签看更多好帖

[软件工具] 写一个IP转CIDR工具的代码 可根据需求修改获取数值

[复制链接]

3

主题

0

回帖

37

积分

新手上路

积分
37
分享到:
发表于 2025-12-25 17:51:50 | 显示全部楼层 |阅读模式
有些做网站需要用到cloudflare的加速服务,查看网站安全事件的时候,需要导出json的ip进行处理,比如复制ip到服务器防火墙进行设置屏蔽禁止这些ip访问,由于导出的文件是json格式文件,无法一键复制所有ip,在这里写一个代码获取json文件中的clientIP数值也就是IP,并且自动将IP地址转CIDR格式0/24,就是防火墙ip格式。支持一键复制。可根据需求自己修改,代码是php代码。
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>IP转CIDR工具</title>
  5.     <style>
  6.         body { font-family: Arial, sans-serif; margin: 20px; }
  7.         .container { max-width: 1200px; margin: 0 auto; }
  8.         table { border-collapse: collapse; width: 100%; margin: 20px 0; }
  9.         th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
  10.         th { background-color: #f2f2f2; }
  11.         .ip-column { font-family: monospace; }
  12.         .copy-btn {
  13.             padding: 4px 8px;
  14.             background: #4CAF50;
  15.             color: white;
  16.             border: none;
  17.             cursor: pointer;
  18.             border-radius: 3px;
  19.         }
  20.         .copy-btn:hover { background: #45a049; }
  21.     </style>
  22. </head>
  23. <body>
  24.     <div class="container">
  25.         <h1>IP地址转CIDR格式</h1>
  26.         
  27.         <?php
  28.         $url = 'json文件地址';
  29.         $data = @json_decode(file_get_contents($url), true);
  30.         
  31.         if ($data && is_array($data)) {
  32.             echo "<p>共找到 " . count($data) . " 条记录</p>";
  33.             
  34.             echo "<table>";
  35.             echo "<tr>
  36.                     <th>序号</th>
  37.                     <th>原始IP地址</th>
  38.                     <th>CIDR格式</th>
  39.                     <th>国家</th>
  40.                     <th>动作</th>
  41.                     <th>操作</th>
  42.                   </tr>";
  43.             
  44.             $cidrList = [];
  45.             foreach ($data as $i => $item) {
  46.                 if (isset($item['clientIP'])) {
  47.                     $originalIP = $item['clientIP'];
  48.                     // 转换为CIDR
  49.                     $cidrIP = preg_replace('/\.\d+$/', '.0/24', $originalIP);
  50.                     $cidrList[] = $cidrIP;
  51.                     
  52.                     echo "<tr>";
  53.                     echo "<td>" . ($i + 1) . "</td>";
  54.                     echo "<td class='ip-column'>$originalIP</td>";
  55.                     echo "<td class='ip-column'>$cidrIP</td>";
  56.                     echo "<td>" . ($item['clientCountryName'] ?? '') . "</td>";
  57.                     echo "<td>" . ($item['action'] ?? '') . "</td>";
  58.                     echo "<td><button class='copy-btn' onclick="copyToClipboard('$cidrIP')">复制</button></td>";
  59.                     echo "</tr>";
  60.                 }
  61.             }
  62.             echo "</table>";
  63.             
  64.             // 去重后的CIDR列表
  65.             $uniqueCIDRs = array_unique($cidrList);
  66.             
  67.             echo "<h2>唯一CIDR列表 (" . count($uniqueCIDRs) . " 个)</h2>";
  68.             echo "<div style='background: #f5f5f5; padding: 15px; border-radius: 5px;'>";
  69.             echo "<textarea id='cidrOutput' rows='10' style='width: 100%; font-family: monospace;'>";
  70.             echo implode("\n", $uniqueCIDRs);
  71.             echo "</textarea>";
  72.             echo "<button onclick="copyAll()" style='margin-top: 10px; padding: 8px 16px;'>复制所有CIDR</button>";
  73.             echo "</div>";
  74.         } else {
  75.             echo "<p style='color: red;'>无法获取或解析JSON数据</p>";
  76.         }
  77.         ?>
  78.         
  79.         <script>
  80.         function copyToClipboard(text) {
  81.             navigator.clipboard.writeText(text).then(() => {
  82.                 alert('已复制: ' + text);
  83.             });
  84.         }
  85.         
  86.         function copyAll() {
  87.             const textarea = document.getElementById('cidrOutput');
  88.             textarea.select();
  89.             navigator.clipboard.writeText(textarea.value).then(() => {
  90.                 alert('已复制所有CIDR地址');
  91.             });
  92.         }
  93.         </script>
  94.     </div>
  95. </body>
  96. </html>
复制代码

在上面的代码中需要修改两处,双引号字符串内部的双引号需要转义(使用反斜杠\),否则PHP解析器会将它们误解为字符串的结束标记。修改如下图;

运行的php文件效果图片



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

使用高级回帖 (可批量传图、插入视频等)快速回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
快速回复 返回顶部 返回列表