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
dearmymy
V2EX  ›  Python

一个很奇怪,有意思的接口反爬策略

  •  
  •   dearmymy · 22 天前 · 2853 次点击
    一个简单的 get 请求,ua ,ip 代理什么都有
    使用 request 库请求。
    一个 python 进程,连续请求 20 次都没问题,精准 21 次就拒绝。
    关键是重启脚本进程,又可以了,还是 21 次精准发现。

    现在高度怀疑是不是 request 里对同一个 url 请求 tcp 进行的端口复用?网上找写方法每次起新 http 请求代码都没有效果。
    20 次重启一次也是 ok ,主要这种策略第一次见到,感觉是 tcp tls 那边做了手脚。如果可行 也是个不错的反爬策略。

    求一些思路。
    21 条回复    2024-10-24 22:27:51 +08:00
    RaMa291041610
        1
    RaMa291041610  
       22 天前   ❤️ 1
    zeusho871
        2
    zeusho871  
       22 天前 via Android
    tls 指纹
    dearmymy
        3
    dearmymy  
    OP
       22 天前
    @RaMa291041610
    @zeusho871 感谢彦祖么,第一次遇到这个。。
    kdwnil
        4
    kdwnil  
       22 天前 via Android
    写爬虫遇过这种策略,就是单个 tcp 连接有 http 请求次数限制,解决办法也只能请求次数差不多时起一个新的 http client ,不过我是 golang 不太清楚 python 要怎么做
    cowcomic
        5
    cowcomic  
       22 天前
    试了一下,同一个 python 脚本,即使重启,request 的 ja3 和 ja4 也是不变的
    咋通过这个区分请求进程的呢?
    defaw
        6
    defaw  
       22 天前
    你开 http keep-alive 了?每次都用新的连接试试
    cccer
        7
    cccer  
       22 天前
    你是不是忽略的 cookies
    dearmymy
        8
    dearmymy  
    OP
       22 天前
    @kdwnil 我感觉就是这个问题, 只不过 python request 库可能不好操作,还是复用了 tcp 。奇怪就是重启就可以继续。
    dearmymy
        9
    dearmymy  
    OP
       22 天前
    @cowcomic 感觉不是指纹,现在高度怀疑,http 复用了 tcp 连接。或者哪里没搞明白
    dearmymy
        10
    dearmymy  
    OP
       22 天前
    @defaw 感觉这个问题,网上找半天代码设置都没效果,在找找
    dearmymy
        11
    dearmymy  
    OP
       22 天前
    @cccer 压根没 cookie
    xdeng
        12
    xdeng  
       22 天前
    tcp 的序列号?
    kdwnil
        13
    kdwnil  
       22 天前
    @dearmymy 因为重启时原有的 tcp 连接都断开了,又重新建立了新的连接
    jinjiang2024
        14
    jinjiang2024  
       21 天前
    有没有可能与间隔时间有关?
    NaclFish
        15
    NaclFish  
       18 天前
    楼主解决了吗
    dearmymy
        16
    dearmymy  
    OP
       18 天前
    @NaclFish 没有很奇怪,能精准抓住同一个进程的请求
    CC11001100
        17
    CC11001100  
       13 天前
    https://github.com/JSREI/tcp-rate-limit-goat

    我写了一个类似的 tcp 连接限速的反爬的测试靶场,有兴趣的朋友可以去玩一玩
    dearmymy
        18
    dearmymy  
    OP
       13 天前
    @CC11001100 很厉害,就是我 id 打下码把。。。。
    CC11001100
        19
    CC11001100  
       12 天前
    @dearmymy #18 啊哈哈不好意思没注意,已经更新图片给 id 打码了 🙈
    dearmymy
        20
    dearmymy  
    OP
       12 天前
    @CC11001100 从你第二个测试结果看,虽然端口不复用了。但是 ip 端口号是依次递增,这个也是很明显的爬虫特征。对于连续端口号依次递增也可以判断爬虫了。
    CC11001100
        21
    CC11001100  
       11 天前
    @dearmymy #20 老哥你说得有道理,不过正常服务器上跑的任务端口估计不会这么连续,估计是因为我机器当时就跑了这一个任务,不过这个识别点也挺有意思的我寻思寻思把这个维度的识别也加上
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5544 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:52 · PVG 15:52 · LAX 23:52 · JFK 02:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.