温馨提示×

怎样统计ip访问次数

小樊
47
2026-09-04 10:04:28
栏目: 编程语言

统计 IP 访问次数通常取决于数据来源使用场景。下面按常见情况给你几种实用方法:


一、Web 服务器日志统计(最常见)

1. Nginx / Apache 日志

假设日志格式中有客户端 IP(如 Nginx 默认: $remote_addr - $remote_user [$time_local] "$request"

统计访问次数最多的 IP(Top 10)

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10

统计某个 IP 的访问次数

grep "192.168.1.100" access.log | wc -l

按时间统计某 IP(如每小时)

grep "192.168.1.100" access.log | awk '{print $4}' | cut -d: -f2 | sort | uniq -c

二、使用命令行工具(通用)

从任意含 IP 的文本中统计

grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" file.txt | sort | uniq -c | sort -nr

三、数据库统计(如 MySQL)

如果访问记录存数据库:

SELECT ip, COUNT(*) AS cnt
FROM access_log
GROUP BY ip
ORDER BY cnt DESC
LIMIT 10;

四、编程语言统计(示例)

Python 示例

from collections import Counter

with open("access.log") as f:
    ips = [line.split()[0] for line in f]

counter = Counter(ips)
print(counter.most_common(10))

五、实时统计 / 防刷场景

  • Nginx + Lua:实时计数
  • RedisINCR ip:192.168.1.1
  • ELK / Grafana:可视化统计
  • Fail2Ban:自动封禁异常 IP

六、注意事项

  • 注意 CDN / 代理:真实 IP 可能在 X-Forwarded-For
  • 排除内网 IP、爬虫、健康检查
  • 大日志建议用 awk 或离线分析,避免卡顿

如果你能告诉我:

  • Nginx / Apache / 应用日志
  • 实时还是离线
  • 是否用 数据库 / 云服务

我可以给你更精准的方案。

0