• 请不要在回答技术问题时复制粘贴 AI 生成的内容
YCCD
V2EX  ›  程序员

写了一个用来检测 proxy 的 api,目前来看,正确率应该比较高

  •  2
     
  •   YCCD · Aug 19, 2024 · 7194 views
    This topic created in 809 days ago, the information mentioned may be changed or developed.

    ProxyChecker

    • 这个检测方法不需要任何 ip 库,成本很低,还比较难绕过

    • 原理的话,不是 ip 库,不是 tls 指纹,不是检测分流规则,不是 dns 泄露,不是 webrtc

    • 根据我目前的了解,应该没有其他的 api 使用这个检测方法(可能是我见的少)

    • 能检测 proxy ,但是有些 virtual private network 检测不到(比如 wireguard 等)

    • 上面链接是个简单的前端 UI ,可以直接用 curl 访问:

      curl https://api.proxychecker.yccd.cc:8443
      
      # use http://127.1:7890 as http_proxy
      curl https://api.proxychecker.yccd.cc:8443 -x http://127.1:7890
      

      需要 curl 支持 http2 ,windows 默认的 curl 好像不支持,

      也可以直接在浏览器访问这个 https://api.proxychecker.yccd.cc:8443

    • 有些情况下检测不出来,但应该是少数情况,国内使用国内的 proxy 可能检测不到

    • 用来检测一些使用 proxy 的爬虫应该效果不错

    • 目前接口可能会需要 1-10s 响应,可以再优化一下,懒得搞了

    • 只能检测是否使用代理,没法获取到真实 ip

    Supplement 1  ·  Aug 19, 2024
    • 会开源,但是目前代码有点丑,等我修改完,
    • 原理就是 检测一下 tls 的 rtt 和 tcp 的 rtt,如果没有代理,两者应该是差不多的
    Supplement 2  ·  Aug 20, 2024

    代码已开源,在 /t/1066463

    55 replies  •  2024-09-02 16:01:48 +08:00
    JsonNode
    JsonNode
    Aug 19, 2024
    1
    JsonNode
    JsonNode
    Aug 19, 2024
    2
    随便换了几个 ip 就检测不出了
    KagurazakaNyaa
    KagurazakaNyaa
    Aug 19, 2024
    3
    透明代理好像检测不出来
    Retas
    Retas
    Aug 19, 2024
    4
    同一个 IP 刷新几次在 Yes 和 No 反复横跳,检测有点玄学成分
    YCCD
    YCCD
    OP
    Aug 19, 2024
    5
    @Retas 有些数据就是在临界值附近的,多收集点数据可能会准一些
    YCCD
    YCCD
    OP
    Aug 19, 2024
    6
    有 5-10%的数据离临界值比较近
    w88975
    w88975
    Aug 19, 2024
    7
    原理是啥? IP 定位?
    YCCD
    YCCD
    OP
    Aug 19, 2024
    8
    @w88975 不是定位
    lisxour
    lisxour
    Aug 19, 2024
    9
    接口不太稳定,没法用啊,能稳定在 3 秒内就差不多了,偶尔会出现 7 、8 秒的情况,大部分 2 秒内。
    cenyejinxi
    cenyejinxi
    Aug 19, 2024
    10
    原理是往返时间么?
    ciki
    ciki
    Aug 19, 2024❤️5
    11
    你发这些有什么目的?谁指使你的?你的动机是什么?
    YCCD
    YCCD
    OP
    Aug 19, 2024
    12
    @lisxour 可以优化,暂时先看看效果怎么样
    alect
    alect
    Aug 19, 2024
    13
    我真实 ip 提示 proxy
    pagxir
    pagxir
    Aug 19, 2024 via Android
    14
    #13 我估计测试 3 层时延跟 4 层的差,然后你机器性能比较差或者网络丢包重传了,然后被识别成。明显是不靠谱的评估方式
    WorldlineChanger
    WorldlineChanger
    Aug 19, 2024
    15
    时间差?
    montaro2017
    montaro2017
    Aug 19, 2024
    16
    没检测出来
    tf2
    tf2
    Aug 19, 2024
    17
    阿里云的 ip 你告诉我不是代理。。


    好吧。
    LitterGopher
    LitterGopher
    Aug 19, 2024
    18
    ![连续测试多次结果]( )

    确实存在部分抖动,而且服务本身好像不太稳定,有时候请求不到。

    > 有开源的打算么?想要学(白)习(嫖)一下。
    R4rvZ6agNVWr56V0
    R4rvZ6agNVWr56V0
    Aug 19, 2024
    19
    OS fingerprint + UA matching ?
    nothspec
    nothspec
    Aug 19, 2024 via Android
    20
    高级呀,哥,我 N 个节点都对了
    yanyao233
    yanyao233
    Aug 19, 2024 via Android
    21
    蹲一个原理,后续会开源吗?
    slowman
    slowman
    Aug 19, 2024
    22
    tcp 时间戳?
    Bingchunmoli
    Bingchunmoli
    Aug 19, 2024 via Android
    23
    打不开
    slowman
    slowman
    Aug 19, 2024❤️6
    24
    抓包看了下, 应该是对比 ack time 和 http2 ping time
    有点东西
    YCCD
    YCCD
    OP
    Aug 19, 2024
    25
    @1423 就是这样的
    slowman
    slowman
    Aug 19, 2024
    26
    @YCCD #25 @YCCD #25 好奇你的代码 clean 还是 dirty
    严格做的话应该有个单独的进程/线程抓包, http2 ping 和抓包 ack 匹配是个问题, 毕竟是加密的
    简单做的话只抓 tcp 按字节数规律也行, 只需要找个 http2 server 魔改插入 ping
    1rv013c6aiWPGt24
    1rv013c6aiWPGt24
    Aug 19, 2024
    27
    打算开源吗?挺准的
    YCCD
    YCCD
    OP
    Aug 19, 2024
    28
    @1423
    不需要那么麻烦,tcp 的 rtt linux 有接口可以直接拿
    http2 的话确实需要一些处理,不过也不难
    YCCD
    YCCD
    OP
    Aug 19, 2024
    29
    @UncleCAT4 开源,但是现在代码有点丑
    v1
    v1
    Aug 19, 2024
    30
    如果我写个脚本在落地机上先跑上 N 次并标记 no_proxy 呢?
    YCCD
    YCCD
    OP
    Aug 19, 2024
    31
    @kk2syc 你是说检测爬虫方面吗?
    可以只标记一条 tcp 连接是正常的,如果是 http2 协议的话,之后的请求应该是会复用这条连接的。
    这个检测不难
    qq316107934
    qq316107934
    Aug 19, 2024
    32
    没试海外的节点准不准,但是国内正常的网络被误判的很严重
    qq316107934
    qq316107934
    Aug 19, 2024
    33
    好像找到原因了,4G 和 WiFi 下因为网络波动就会造成误判,有线连接效果会好一点,但也有。
    YCCD
    YCCD
    OP
    Aug 19, 2024
    34
    过滤异常数据的算法有点问题,等我改改
    outtime
    outtime
    PRO
    Aug 19, 2024
    35
    感觉更像是网络质量测试,代理延迟低到一定水平就可以一直过检测
    v1
    v1
    Aug 19, 2024
    36
    @YCCD 不是,我是说如何突破你这个根据波动比例来判断的算法。问题在于你需要纠正算法误差,能纠正就很好搞了,标记 no_proxy 基数达到一个量,你的 proxy 判断也会被纠正
    R4rvZ6agNVWr56V0
    R4rvZ6agNVWr56V0
    Aug 19, 2024
    37
    受制于网络通讯的稳定性
    KagurazakaNyaa
    KagurazakaNyaa
    Aug 19, 2024
    38
    对于工作在第三层和第四层的代理(策略路由和透明代理)似乎无效
    pagxir
    pagxir
    Aug 19, 2024 via Android
    39
    @XiLingHost 不要说三层四层了,你机器慢一些就误判了,对一一个高负载的机器, 内核处理到应用层 58 毫秒延迟很平常
    Masterlxj
    Masterlxj
    Aug 19, 2024
    40
    不如直接 ja4 啊
    duzhuo
    duzhuo
    Aug 19, 2024
    41
    怎么感觉以前看过类似的帖子
    ztmzzz
    ztmzzz
    Aug 20, 2024
    42
    为啥有代理 rtt 时间会不一样,数据包的路径应该是相同的吧。难不成是代理协议处理的时间差别?
    mintongcn
    mintongcn
    Aug 20, 2024 via iPhone
    43
    等开源
    mintongcn
    mintongcn
    Aug 20, 2024 via iPhone
    44
    代理原来这么好检测,我给代理 tcp 加上延时 100ms ,是不是就不好检测了
    不打游戏对延时不敏感。
    qwertooo
    qwertooo
    Aug 20, 2024
    45
    不准确
    kazumaa
    kazumaa
    Aug 20, 2024
    46
    这不是 tls over tls 检测吗
    dode
    dode
    Aug 20, 2024
    47
    这个咋样
    Hysteria 是一个功能丰富的,专为恶劣网络环境进行优化的网络工具(双边加速),比如卫星网络、拥挤的公共 Wi-Fi 、在中国连接国外服务器等。 基于修改版的 QUIC 协议。
    Rehtt
    Rehtt
    Aug 20, 2024 via Android
    48
    没有用代理,但 "is_proxy": true 🤣
    andyC
    andyC
    Aug 20, 2024
    49
    感觉是不错的, 等开源
    8153
    8153
    Aug 20, 2024
    50
    这别人早就发布了,google 搜 通过 https 握手 rtt 识别 TCP 代理(SOCKS5/HTTP/HTTPS)
    tianhehechu
    tianhehechu
    Aug 20, 2024
    51
    此 API 原理及其简单,已被我破解。他测试了源 IP 的访问延迟,在延迟大于 200ms 时,即判定为代理。所以评论区有的 V 友全中,有的 V 友遇到反复横跳的情况。
    tianhehechu
    tianhehechu
    Aug 20, 2024
    52
    @tianhehechu 30~50ms 是判定值,并且多次检测取了平均值
    YCCD
    YCCD
    OP
    Aug 20, 2024
    53
    @tianhehechu 源码放出来了,可以看看去
    YCCD
    YCCD
    OP
    Aug 20, 2024
    54
    @8153 确实,原理差不多,都是找 client 到 proxy server 的延迟
    lypdarling
    lypdarling
    Sep 2, 2024 via Android
    55
    @YCCD 准确率不错,但是感觉很容易被破。这个必须在前端去执行检测。爬虫可以在爬虫端设置本地服务 hosts 指向检测服务器域名,然后本地服务返回 is_proxy 为 false 就行了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1930 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 79ms · UTC 01:24 · PVG 09:24 · LAX 17:24 · JFK 20:24
    ♥ Do have faith in what you're doing.