Cloudflare如何获取访问者IP并记录在IIS日志

2 阅读2分钟

前言

Cloudflare,人称“赛博菩萨”,它提供的网站代理、CDN和静态站托管真的很良心,就是国内部分运营商访问确实时好时坏。

最近在做一个项目,需要得到用户的访问ip和地址。但是套了Cloudflare,所以单纯通过IIS等获取到的IP是CF的IP。

获取IP

其实,Cloudflare代理的网站也可以获取到IP等客户端信息。CF会把来访者的IP、地区等塞进header中,具体可见下表:

头名称内容
CF-Connecting-IP客户端IP
cf-ipcity客户端IP所在城市
cf-ipcountry客户端IP所在国家
cf-iplongitude客户端IP所在地址-经度
cf-iplatitude客户端IP所在地址-纬度
cf-region客户端IP所在地区(一般是省份)
cf-timezone客户端IP所在时区(中国是Asia/Shanghai

CF的IP数据库可能不准确,尤其是家庭宽带来源的IP,经常出现实际地址和获取到的地址不一样的情况。但固定IP还是很准的

这样,我们可以在代码中获取请求的header就可以,我们也可以把他们添加到服务器的日志中。这里我以IIS为例

IIS日志添加客户端IP信息

Step 1

进入IIS的服务器主页(全局配置,如果只需要单独的几个网站,就在网站的主页中配置),进入日志

Step 1

Step 2

点击选择字段

Step 2

Step 3

点击添加字段,将上表的字段依次添加即可。表格中的头名称对应的是,上面的字段名称可以填写自己自定义的名称,也可以和源名称一样。

Step 3

最后保存即可

以上文章内容均经过本人验证。如有疏漏,还请指出