https://support.cloudflare.com/hc/zh-cn/articles/200168236-Cloudflare-IP-地理位置有什么作用-
我是小白,只懂一些网站皮毛
请问 cloudflare 到底把这些访客的真实 IP 数据放在哪里了? 在我网站数据库的哪个地方? 如何查看? 我用的是 CPanel 。
然后他也有提供修复方案 给了我个 Github 地址我完全不会安装这个东西啊 太复杂了,完全看不懂 谁能帮忙解释一下?
1
presoul 2020-10-04 10:21:51 +08:00 via Android 2
x-real-ip
|
2
WesleyNZ OP @presoul 这是什么意思? 我想问的是,那些数据的 log,存放在我网站的哪个物理文件里面,我现在就需要那个真实 Ip 数据
|
3
WesleyNZ OP 并以 ISO 3166-1 Alpha 2 格式将国家 /地区代码传递给您的源站。
请问????这个数据在源站的哪里? 如果是数据库是哪个数据库? 是存在哪个表里呢? |
4
wjhjd163 2020-10-04 10:32:11 +08:00 via Android 1
一楼正解
|
7
shansing 2020-10-04 10:34:35 +08:00
HTTP header: x-real-ip
|
8
zhangshine 2020-10-04 10:35:30 +08:00
真实数据在 header 里面,你需要自己把这个值取出来,可以用程序来做也可以修改 nginx/apache 对应的配置文件来做。
|
9
WesleyNZ OP @zhangshine 请问如何提取数据 我网上找不到教程.....
|
10
WesleyNZ OP @zhangshine header 的数据又在哪里? phpadmin 还是 MySQL?
我去 cpanel 分别搜索,都搜不到这个 x-real-ip |
11
zhangshine 2020-10-04 10:43:16 +08:00
@WesleyNZ 百度 /google: cloudflare 访客 ip
|
12
xionger 2020-10-04 10:47:05 +08:00 via Android
有吗?不是透明的传递吗?不需要 header 吧
|
13
WesleyNZ OP @zhangshine 我搜过了 大哥 大哥
|
14
coolcfan 2020-10-04 11:14:29 +08:00 via Android
Cloudflare 怎么会有能力往你的网站数据库里存东西呢,大家说的也很清楚了是在 HTTP Header 里,感到茫然的话先从 HTTP 协议的基本知识了解一下
|
15
reechangs 2020-10-04 11:15:39 +08:00
如果你用的是 nginx,直接在 conf 中直接增加配置文件即可。
具体方法可参考 https://wzfou.com/cdn-real-ip/ |
16
codingadog 2020-10-04 11:15:47 +08:00 via Android
http headers 了解一下
|
19
WesleyNZ OP @coolcfan 我 end user 不想了解那么多 而且这么简单的一个功能 脚本设置难度也太高了
|
20
krixaar 2020-10-04 11:21:45 +08:00 via Android
用 CPanel 的话直接给服务商发 ticket 问啊,你啥都操作不了的,或者去服务商的知识库里搜一下有没有。
|
21
WesleyNZ OP @krixaar 人家怎么会管你的 Cloudflare 啊?
这是 cloudflare 不给我设置,关他们什么事? |
22
mschultz 2020-10-04 11:30:48 +08:00
cPanel 貌似是一个管理面板的名字?不是 Web Server 的名字。Web Server 有比如 Nginx, Apache, EasyApache (其实你主题里那个 「修复方案」 列出了很多)。你看看你具体用的是哪个。
cPanel 的常见 log 文件的位置,我查到大概是 https://docs.cpanel.net/knowledge-base/cpanel-product/the-cpanel-log-files/ 不过声明我没用过 cPanel,只是随手一搜,你需要的话自己 Google 一下。 ---- 然后,访客访问网站的时候会给你的 Web Server 发送请求,里面 HTTP Header 里包括一些字段,如果你用了 Cloudflare 的 CDN,那么 Cf-Connecting-Ip 这个字段的值就是访客的真实 IP. 这些 HTTP 请求 Header 一般都会留在 Web Server 的 log 里 另外不清楚为什么楼上几个同学说 X-Real-Ip 是正解,我个人了解的是,如果用了 Cloudflare CDN,X-Real-Ip 无法获取访客真实 IP,它依然是 Cloudflare 节点的 IP. |
23
mschultz 2020-10-04 11:35:14 +08:00
另外就是你要确认一下你的网站具体是什么?你可以考虑一下你是不是有必要从 log 那么基础的文件里获取访客 IP.
搞不好你的网站应用里就有办法抓取到访客的真实 IP. 举个例子: WordPress,它本身就有统计访客来源的功能,但是这个访客 IP 也是根据 HTTP Header 里的我忘了是 Remote-addr 还是 x-real-ip 了,总之如果用了 Cloudflare,这俩都不是访客真实的 IP. 但是,有一个插件 WP Statistics,里面可以指定「将哪个字段认为是访客 IP 」,这里我指定把 「 Cf-Connecting-Ip 」作为访客真实 IP 就可以了 |
24
also24 2020-10-04 11:36:41 +08:00 4
@WesleyNZ #21
如果你希望了解这件事的完整原因,建议你学习一下网络协议,了解一下三层转发的细节,以及 CloudFlare 的基础原理。 如果你不想知道细节,只是想解决这个问题,那么你只需要记以下结论: 1 、这件事确实是因为你加了 CloudFlare 引起的。 2 、解决方式就是 X-Forwarded-For 或 X-Real-IP 字段。 3 、要读取这两个字段,需要靠服务商或你自己的程序来解决。 4 、如果你自己不知道如何在自己的程序上解决,那你只能求助于服务商。 5 、服务商如果不愿意解决也是正常的,看具体沟通情况。 6 、如果想彻底解决,建议学习相关知识,买完整的 VPS 自己配置,而不是 CPanel 虚拟主机。 服务商的解决方式参考: https://support.cpanel.net/hc/en-us/articles/360051107513-Restoring-visitors-IP-with-mod-remoteip |
25
krixaar 2020-10-04 11:40:40 +08:00 via Android
@WesleyNZ 统计 cf 的源 ip 需要给服务端设置记录 cf 的 header,也就是楼上说的那些,例如 Apache 需要装 mod_cloudflare 并启用,你作为 cPanel 用户一般是不可能有这种权限的,你必须找服务提供商,所以楼上这些回答你一个也搞不明白。cf 因为太常用,服务商兴许已经设置过需要你去开启,那么你就得去找他们的知识库,没有就发 ticket 。
所以说虚拟空间到处都是坑…… |
26
mschultz 2020-10-04 11:40:59 +08:00
@also24 #24 用了 Cloudflare 之后 X-Forwarded-For 或 X-Real-IP 都是 Cloudflare 节点的 IP 啊?
应该用 Cf-Connecting-Ip 吧🤔 |
27
windyskr 2020-10-04 11:43:25 +08:00 via Android
|
28
also24 2020-10-04 11:44:56 +08:00
@mschultz #26
CF 确实没有带 X-Real-IP,但是 X-Forwarded-For 是按照规范实现的。 我这里没有提 CF-Connecting-IP,主要还是因为 X-Forwarded-For 相对来说更常用一些。 http://support.cloudflare.com/hc/en-us/articles/200170986 |
29
mschultz 2020-10-04 11:56:54 +08:00
@also24 #28 哦哦,谢谢,我好像刚才也想发这个链接来着(不过这个链接里也是推荐用 Cf-Connecting-Ip )。
我这里有个 Traefik + whoami 的 docker 镜像搭的 demo,我打开的时候,X-Forwarded-For 显示的依然是 Cloudflare 节点的 IP. 这里面只有 Cf-Connecting-Ip 是真实 IP. demo 地址: https://www.f-c.xyz 可能是因为隔了一层 Docker 的原因? 你可以试一下 (搭建的文档其实就是 Traefik 的 Hello World: https://doc.traefik.io/traefik/getting-started/quick-start/ ) |
30
also24 2020-10-04 12:02:29 +08:00
@mschultz #29
可能是因为你没有配置对这个字段的信任吧: https://doc.traefik.io/traefik/routing/entrypoints/#forwarded-headers 此类字段,一般都需要配置 Trust IP 的,不然会有伪造 IP 的漏洞。 |
31
dototototo 2020-10-04 12:10:58 +08:00 via Android
cf 是个中介,你委托人家卖东西,人家也告诉你买家是谁了,你听不懂,质问中介怎么还要你来告诉我买家是谁啊,让他自己来买不就行了吗?
|
33
Actrace 2020-10-04 12:34:16 +08:00
CF 现在已经不提供 ipv4 的访客 IP 地址了。虽然它会提供一个转换后的 ipv4 地址,但是那个地址并不是客户的 IP 地址。
目前 CF 只在 http header 提供 ipv6 的地址。 |
34
presoul 2020-10-04 12:40:42 +08:00 via Android
trust ip: https://www.cloudflare.com/ips-v4
|
35
SingeeKing 2020-10-04 12:42:51 +08:00 via iPhone
为什么我记得 CF 告知真实 IP 是一个付费功能
|
36
SingeeKing 2020-10-04 12:46:21 +08:00 via iPhone
|
38
datou 2020-10-04 13:54:05 +08:00
在 header 里面找
|
39
Yourshell 2020-10-04 13:56:00 +08:00
|
40
WesleyNZ OP @krixaar
服务商 5 分钟回复内给解决了,从现在以后都是显示真实 IP 地址,谢谢。 但是昨天的访客数据都是 cloudfare 的,我特别想知道这个恶意评论的人是谁,我知道 162.1xx.XXX.XXX 这个地址是转换后的地址,但是在我 header 里面,原地址是有的吧?请问去哪里找? |
41
WesleyNZ OP |
43
icyalala 2020-10-04 15:07:44 +08:00 3
所以说,其实楼主最直接的目的是找到昨天发恶意评论的人是谁。。
|
44
Kaiyuan 2020-10-04 15:13:36 +08:00 via iPhone
我记得是有两个 IP,前面的是 CF,后面的是访客 IP 。
|
45
WesleyNZ OP @icyalala 对,一堆人不知道我什么意思 乱评论
这件事情已经解决了 ,以后都会显示真正 IP |
46
skylancer 2020-10-04 17:03:34 +08:00 20
自己语文水平堪忧兼是个小白还说人乱评论... 蜜汁操作
|
47
tanghongkai 2020-10-04 18:09:59 +08:00
@skylancer 白嫖惯了是这样的,已 block 免得影响心情
|
49
DeutschXP 2020-10-04 19:50:09 +08:00 via iPhone 1
浓浓的甲方气息,不过也是一个小锻炼,如果楼上觉得不舒服的,那么可能还是适合默默写程序,就不要想着转行搞销售搞业务啥的了,会有更多不适应,现实中,甲方态度要恶劣多了
|
51
also24 2020-10-04 21:10:05 +08:00 via Android 1
|
52
WesleyNZ OP 你不回答可以走的,一些半吊子进来回答一半还当圣母是最骚的。
|
53
WesleyNZ OP @tanghongkai 您凉快去吧
|
54
codespots 2020-10-04 22:42:57 +08:00 5
看楼主的态度,我直接来一句楼主烧饼不为过吧!
|
55
imdong 2020-10-04 23:13:51 +08:00 2
@DeutschXP #49 类比不合适,如果楼主花钱找我解决问题,我会当爸爸供起来(钱给够就行)
==== 问题解决很简单,但是楼主(发帖者)确实没有将自己的目的说清楚,问题不复杂。 一早就看到这个贴子,典型的憨憨菜鸟的求助帖(无贬义),比伸手党稍微好一些,但是沟通起来巨费劲,按照《提问的智慧》来说也确实证实自己是有自己尝试通过搜索解决过问题(当然不排除是通过其他渠道伸手得到的一些解决方案),可是由于能力有限无法找到重点且无法理解现有的解决方案(但依然没能通过发帖表达清楚自己的意图,这个确实是发帖者的问题,此处为批评)。 回帖的人中愿意给出解决方案的(不管正确与否)都应该被鼓励、感谢才对,楼主描述不清楚自己的问题,不要怪大家说,提问就要做好被喷的准备,这年头冲个浪,谁还没被喷过。 最后,为了防止我也被喷,给个不是个好的但好使的解决方案: 对于 PHP 来说,在入口文件里(如 index.php ),加入下面的代码,即可(不提供技术支持,使用后果自行承担) $_SERVER['REMOTE_ADDR'] = $_SERVER['REAL_IP'] = $_SERVER['CF-Connecting-IP']; 代码很傻,但是对新手来说,很好使。 另外,如果之前没有配置过保存,拿你这个恶意评论的 IP 九成九是拿不到的,已经消失了(除非 CF 有提供日志,我不清楚) 就算你拿到 IP 又怎样?顺着网线去打人不成,先不管你能不能顺着网线找到人,找到又能打得过?毕竟客场作战,打赢了又怎样?弄不好因为寻衅滋事就进去了。 网络上喷子这么多,何必放在心上,删掉就好了,斤斤计较,对自己一点好处都没有。 |
56
datou 2020-10-05 00:05:15 +08:00
@WesleyNZ 在程序里记录 request header 的 x-forwarded-for
套了 cf 的话 x-forwarded-for 会有两个 ip,前面的是访客真实 ip,后面的是 cf 节点 ip |
58
msg7086 2020-10-05 05:38:08 +08:00 1
如果觉得自己是小白,那就谦虚点。态度好点,大家都愿意教,愿意帮忙。
人就是这样一种生物,如果你很懂,大家都愿意和你说话,如果你很谦虚,虽然不懂,大家也愿意教。 但是你又不懂,还要一脸傲慢的样子,怕不是在讨打。 当然了,论坛上也没法打你,最多也就是喷你几句完事,懂的人都 block 了,以后你问的问题不再会有人答。 但如果这态度放到现实中,就好好挨社会的毒打吧。 既然你说了「不回答可以走的」,那我也说一句,不想谦虚地讨论问题,您也可以走的。 最后,回答一下你的问题,既然之前的真实 IP 没有被你记录下来,那么他们就永远丢失了。 至于拿 IP,也没什么意义,现在 IP 大多都是共享的,你拿一个 IP 等于拿一个区或者一个市,有什么用呢。 就说你在帖子里那么多恶意回复,我找站长拿了你 IP,难道我还能跑到你们区的电信局一个一个家庭地址找吗。 真心的,不懂,就多学学,没坏处。 |
60
WhoMercy 2020-10-05 09:59:38 +08:00 1
|
61
learningman 2020-10-05 15:57:52 +08:00
@DeutschXP 甲方给钱,多恶劣都能忍,这个 XX,凭啥呢?
|
62
xgQikk 2020-10-05 16:42:09 +08:00 via iPhone 1
怎么这个脑瘫这么久了还在这里发帖
|
63
evilStart 2020-10-05 20:25:57 +08:00 via Android
v2ex 的很多帖子让我觉得这是一个少儿编程论坛。
|
64
WesleyNZ OP @imdong
谢谢,host 方已经给我改回来,然后把日志文件给我了,日志文件里面 并没有这个数据,只保存了一个 Cloudflare 的 IP 。 我生气的是,有的回一个字,叫我自己去领悟 我看了网站中文英文解决方案都 2 个小时了我才来发帖的。 还有一群不帮忙来 BB 当圣母的。 我只是想拿回来这个特定的 IP 仅此而已,不过根据你的描述 应该是没办法了,谢谢! 有提供日 |
66
WesleyNZ OP @datou 你这个解释非常清楚,谢谢你。
但是我不太清楚我 server 的 request header 存在哪里?一般的花 wordpress 的 request header 存在哪个地方呢? |
69
WesleyNZ OP @DeutschXP 我对,提供帮助的人 都是感谢,态度挺好的啊,那些莫名其妙回答一半的 我都说了我没有基础,你给我个
x-real-ip 我能知道是什么意思? 我昨天已经花了 1 个小时读完了 https 的流程 我还是不懂我才来问的啊 |
71
lvjiefly 2020-10-07 11:14:31 +08:00
不回答可以走是什么意思?这是你家?
|
72
julyclyde 2020-10-08 09:56:39 +08:00
你这个学习能力,建议不要用 cloudflare 之类的高级东西
比较简洁的环境更适合 |
74
WesleyNZ OP 更新答案:
所有的虚拟服务空间都不会保存 request header 到 log 里. 结论: 如果你没一开始付费 Cloudflare 的付费功能,或者是你一开始没有按照教程去显示真实 IP, 这些数据就永远拿不回来了。 你后面开通这两个功能也毫无作用,这些数据就是永久丢失了。 |