V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
tg11
V2EX  ›  Python

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

  •  
  •   tg11 · 2022-05-12 18:05:39 +08:00 · 4791 次点击
    这是一个创建于 926 天前的主题,其中的信息可能已经有所发展或是发生改变。

    说下我这已经验证的问题:本地运行采集代码无任何问题(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 还可能在哪些方面识别服务器呢?

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

    1. ip 地址能识别出 是否来自服务器
    2. 无头浏览器的各种特征 ,比如 window.navigator.webdriver 等
    3. tls 指纹 ,通过各种浏览器、或者 curl 、各语言的 http 请求库请求的 tls 指纹都有区别。
    est
        6
    est  
       2022-05-12 21:24:06 +08:00
    LZ 都说了用的 urllib+同样 hheaad 的服务器 ip ,这么多人说屏幕分辨率???
    tg11
        7
    tg11  
    OP
       2022-05-12 21:51:35 +08:00
    @realpg IP 地址,本地挂的服务器代理 IP
    tg11
        8
    tg11  
    OP
       2022-05-12 21:57:55 +08:00
    @letitbesqzr 1.本地挂的服务器代理,所以 IP 是一样的。2.用的同一套同一版本 urllib 库,所以不存在无头浏览器特征不一样的情况。3.还是同一套 urllib 库
    neutrinos
        9
    neutrinos  
       2022-05-12 23:36:26 +08:00 via iPhone
    IP reputation
    xieqiqiang00
        10
    xieqiqiang00  
       2022-05-12 23:47:04 +08:00 via Android
    你这个环境是能运行 Js 的吗?
    oott123
        11
    oott123  
       2022-05-12 23:49:03 +08:00 via Android
    openssl 版本一样吗
    fisherwei
        12
    fisherwei  
       2022-05-13 00:33:23 +08:00   ❤️ 2
    先 tcpdump 一下看看发出去的包有啥区别
    codefun666
        13
    codefun666  
       2022-05-13 07:11:10 +08:00
    IP 头部有的字段可以分析操作系统版本, no magic.
    tg11
        14
    tg11  
    OP
       2022-05-13 13:07:31 +08:00
    @xieqiqiang00 无论是本地,还是服务器,都是不能运行 js 的
    Te11UA
        15
    Te11UA  
       2022-05-13 16:48:57 +08:00
    90%是 SSL 指纹的原因
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2755 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:58 · PVG 17:58 · LAX 01:58 · JFK 04:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.