前言
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 2
点击选择字段
Step 3
点击添加字段,将上表的字段依次添加即可。表格中的头名称对应的是源,上面的字段名称可以填写自己自定义的名称,也可以和源名称一样。
最后保存即可
以上文章内容均经过本人验证。如有疏漏,还请指出