V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
chackchackGO
V2EX  ›  Linux

Linux 多线程下载, 设定了 user-agent 依然被 403.

  •  
  •   chackchackGO · 295 天前 · 1492 次点击
    这是一个创建于 295 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在下载 miuirom (一个线程限制了 50KBps 左右).
    尝试了 windows 的 idm,最大只支持 32 线程下载.

    于是尝试用 linux 下的 axel .
    调节了线程数, 调节了 --no-proxy, 从浏览器里 copy 了一个 user-agent.
    全都立刻被告知 403 forbidden.

    我是哪里做的不对了?

     axel -a -n 128 \
    --user-agent="Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko" --no-proxy \
    "https://bigota.d.miui.com/V14.0.8.0.TKXEUXM/miui_NABUEEAGlobal_V14.0.8.0.TKXEUXM_13889f8121_13.0.zip"
    
    22 条回复    2024-08-11 11:34:14 +08:00
    LLaMA2
        1
    LLaMA2  
       295 天前
    缺少必要的 header

    具体你得看你可以下载的时候

    有哪些 header ,统统补上
    busier
        2
    busier  
       295 天前 via Android
    万一人家验了 cookies 呢
    chackchackGO
        3
    chackchackGO  
    OP
       295 天前
    @busier 我都用 idm 了, 还有可能验证 cookie 吗?
    busier
        4
    busier  
       295 天前 via Android   ❤️ 1
    集成到浏览器的下载工具,是会带上浏览器 cookies 进行请求的。
    chackchackGO
        5
    chackchackGO  
    OP
       295 天前
    @LLaMA2 请问怎么捕获下载时的 http request 方便?
    dev tools 似乎没有捕获到.
    bluehr
        6
    bluehr  
       295 天前
    @chackchackGO 为啥不可能,很早之前的百度云用 IDM 下载就得设置 cookie
    chackchackGO
        7
    chackchackGO  
    OP
       295 天前
    @bluehr 学习了 谢谢.
    @busier
    busier
        8
    busier  
       295 天前 via Android
    还有 referer 有的要验
    LLaMA2
        9
    LLaMA2  
       295 天前   ❤️ 1
    curl 'https://bigota.d.miui.com/V14.0.8.0.TKXEUXM/miui_NABUEEAGlobal_V14.0.8.0.TKXEUXM_13889f8121_13.0.zip' \
    -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' \
    -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6' \
    -H 'Connection: keep-alive' \
    -H 'DNT: 1' \
    -H 'Referer: https://mirom.ezbox.idv.tw/en/phone/nabu/' \
    -H 'Sec-Fetch-Dest: document' \
    -H 'Sec-Fetch-Mode: navigate' \
    -H 'Sec-Fetch-Site: cross-site' \
    -H 'Sec-Fetch-User: ?1' \
    -H 'Upgrade-Insecure-Requests: 1' \
    -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0' \
    -H 'sec-ch-ua: "Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"' \
    -H 'sec-ch-ua-mobile: ?0' \
    -H 'sec-ch-ua-platform: "Linux"' \
    --compressed \
    -o 123.zip
    chackchackGO
        10
    chackchackGO  
    OP
       295 天前
    @LLaMA2
    @bluehr
    @busier
    为了捕获下载时的 http request, 我走了个 burp suite 的代理.
    然后在浏览器上被弹 403 forbidden 了.

    怎么只是经过了个本地代理还会被 forbidden 呢, burp 改了 request 内容吗?

    下载个国内资源好难.
    chackchackGO
        11
    chackchackGO  
    OP
       295 天前
    @LLaMA2 感谢.
    axel 不知道为什么限制 9 个 header.
    我去掉了一些感觉可能不需要的 header 勉强能下载了
    ```
    axel -a -n 256 --no-proxy 'https://bigota.d.miui.com/V14.0.8.0.TKXEUXM/miui_NABUEEAGlobal_V14.0.8.0.TKXEUXM_13889f8121_13.0.zip' \
    -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' \
    -H 'Connection: keep-alive' \
    -H 'Referer: https://mirom.ezbox.idv.tw/en/phone/nabu/' \
    -H 'Sec-Fetch-Dest: document' \
    -H 'Sec-Fetch-Site: cross-site' \
    -H 'Sec-Fetch-User: ?1' \
    -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0' \
    -H 'sec-ch-ua: "Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"' \
    -H 'sec-ch-ua-platform: "Linux"'
    ```
    bigtear
        12
    bigtear  
       295 天前
    你的方法一开始就错了,直接 hosts 改到不限速的服务器下载 rom 就行了
    ```
    bigota.d.miui.com: 123.6.13.6
    hugeota.d.miui.com: 123.6.13.6
    ```
    bigtear
        13
    bigtear  
       295 天前
    不好意思,上个月下载 rom 的时候这个方法还有效,现在去看了下怎么下载 rom 直接 403 了,太狗了吧,下载的还是最新的 rom 不是旧版的...
    chackchackGO
        14
    chackchackGO  
    OP
       295 天前   ❤️ 1
    @bigtear 那我在这顺便吐槽一下,我接着遇到了我的 mi 设备,在 fastboot mode 下,usb 口不工作。
    真正意义上的不工作,插上任何系统的设备都无法在设备列表里检测到。(设备都没有检测到所以更谈不上驱动问题了)。

    已经放弃了,以后买国际品牌好了。
    ceeeeeeeeeeeeeeb
        15
    ceeeeeeeeeeeeeeb  
       295 天前
    很多自定义头 一个不要落下
    dnslint
        16
    dnslint  
       295 天前
    idm 的插件会做这件事情,另外 你的手机可能是 usb2.0
    Beats
        17
    Beats  
       295 天前
    全部带上,鬼知道人家校验了啥,有的还校验时间戳呢
    chackchackGO
        19
    chackchackGO  
    OP
       293 天前
    @flynaj
    @dnslint
    小米系列产品基本可以默认是 usb2.0.
    能稍微讲解一下这和“唯独 fastboot 下,设备从根本上无法发现”有什么关联吗?
    flynaj
        20
    flynaj  
       293 天前
    @chackchackGO #19 这个是补你的系统。你电脑上的 usb3.0 接口。小米手机为了私有的快充协议,全部只有 usb2.0.
    chackchackGO
        21
    chackchackGO  
    OP
       292 天前
    @flynaj 没用.
    我的情况是设备在 fastboot 模式下, 从底层都无法检测到.
    用 linux 也是, 连接电脑 usb2 口后, 系统没有检测到任何设备连接.
    要不是没有工具, 我觉得我甚至可以验证在 fastboot 下连接 usb 口可能连一点电信号都没有.
    chackchackGO
        22
    chackchackGO  
    OP
       81 天前
    @chackchackGO
    应该是驱动问题, 错信了小米官方提供的 usb 驱动.
    尝试了很多个简中 web 提供的驱动都是这个问题.

    用 android studio 提供的驱动就修复了.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4342 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:03 · PVG 09:03 · LAX 18:03 · JFK 21:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.