共同探讨: Cloudflare 是怎么识别出来我是服务器环境的?

2022-05-12 18:05:39 +08:00
 tg11

说下我这已经验证的问题:本地运行采集代码无任何问题(MacOS),但放到服务器上(CentOS)上会出现 403 状态码,并弹出 Cloudflare 验证码页面。本地 IP 是用代理挂的服务器 IP ,无任何问题,但直接在服务器上跑不通。

urllib 包也皆为同一版本,header 头用的 ua 也是同一个。

服务器请求页面最下面有这样一行提示:Another way to prevent getting this page in the future is to use Privacy Pass. You may need to download version 2.0 now from the Chrome Web Store.说明是识别了 UA 的。除了 UA ,Cloudflare 还可能在哪些方面识别服务器呢?

4603 次点击
所在节点    Python
15 条回复
ruixue
2022-05-12 18:21:40 +08:00
语言、时区、系统字体、屏幕分辨率、cpu 核心数,这些信息网页都可以获取的
huxins
2022-05-12 18:27:46 +08:00
https://wicg.github.io/ua-client-hints/
还有各种 js api ,浏览器有头无头,你本地可以,那直接用相似的环境就行了,不然一个一个参数排查
太麻烦了
swulling
2022-05-12 18:39:35 +08:00
爬虫识别而已,方案太多了。UA 只是最老的方法
realpg
2022-05-12 19:02:32 +08:00
IP 地址就可以过滤掉 90%的服务器环境……
letitbesqzr
2022-05-12 20:43:13 +08:00
什么 useragent 、分辨率等等 就不说了,那些都太常见的识别方式了。说几个容易忽视的点:

1. ip 地址能识别出 是否来自服务器
2. 无头浏览器的各种特征 ,比如 window.navigator.webdriver 等
3. tls 指纹 ,通过各种浏览器、或者 curl 、各语言的 http 请求库请求的 tls 指纹都有区别。
est
2022-05-12 21:24:06 +08:00
LZ 都说了用的 urllib+同样 hheaad 的服务器 ip ,这么多人说屏幕分辨率???
tg11
2022-05-12 21:51:35 +08:00
@realpg IP 地址,本地挂的服务器代理 IP
tg11
2022-05-12 21:57:55 +08:00
@letitbesqzr 1.本地挂的服务器代理,所以 IP 是一样的。2.用的同一套同一版本 urllib 库,所以不存在无头浏览器特征不一样的情况。3.还是同一套 urllib 库
neutrinos
2022-05-12 23:36:26 +08:00
IP reputation
xieqiqiang00
2022-05-12 23:47:04 +08:00
你这个环境是能运行 Js 的吗?
oott123
2022-05-12 23:49:03 +08:00
openssl 版本一样吗
fisherwei
2022-05-13 00:33:23 +08:00
先 tcpdump 一下看看发出去的包有啥区别
codefun666
2022-05-13 07:11:10 +08:00
IP 头部有的字段可以分析操作系统版本, no magic.
tg11
2022-05-13 13:07:31 +08:00
@xieqiqiang00 无论是本地,还是服务器,都是不能运行 js 的
Te11UA
2022-05-13 16:48:57 +08:00
90%是 SSL 指纹的原因

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/852469

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX