推荐学习书目
› 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 · Oct 14, 2024 · 7870 views
    This topic created in 751 days ago, the information mentioned may be changed or developed.
    一个简单的 get 请求,ua ,ip 代理什么都有
    使用 request 库请求。
    一个 python 进程,连续请求 20 次都没问题,精准 21 次就拒绝。
    关键是重启脚本进程,又可以了,还是 21 次精准发现。

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

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

    我写了一个类似的 tcp 连接限速的反爬的测试靶场,有兴趣的朋友可以去玩一玩
    dearmymy
    dearmymy
    OP
    Oct 23, 2024
    18
    @CC11001100 很厉害,就是我 id 打下码把。。。。
    CC11001100
    CC11001100
    Oct 23, 2024
    19
    @dearmymy #18 啊哈哈不好意思没注意,已经更新图片给 id 打码了 🙈
    dearmymy
    dearmymy
    OP
    Oct 24, 2024
    20
    @CC11001100 从你第二个测试结果看,虽然端口不复用了。但是 ip 端口号是依次递增,这个也是很明显的爬虫特征。对于连续端口号依次递增也可以判断爬虫了。
    CC11001100
    CC11001100
    Oct 24, 2024
    21
    @dearmymy #20 老哥你说得有道理,不过正常服务器上跑的任务端口估计不会这么连续,估计是因为我机器当时就跑了这一个任务,不过这个识别点也挺有意思的我寻思寻思把这个维度的识别也加上
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5433 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 03:38 · PVG 11:38 · LAX 19:38 · JFK 22:38
    ♥ Do have faith in what you're doing.