curl 将在版本 7.70 支持以 JSON 方式输出调试信息 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Livid
218.46D
514.12D
V2EX    cURL

curl 将在版本 7.70 支持以 JSON 方式输出调试信息

  •  
  •   Livid
    PRO
    2020 年 3 月 18 日 6765 次点击
    这是一个创建于 2154 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://daniel.haxx.se/blog/2020/03/17/curl-write-out-json/

    例子如下:

    { "url_effective": "https://example.com/", "http_code": 200, "response_code": 200, "http_connect": 0, "time_total": 0.44054, "time_namelookup": 0.001067, "time_connect": 0.11162, "time_appconnect": 0.336415, "time_pretransfer": 0.336568, "time_starttransfer": 0.440361, "size_header": 347, "size_request": 77, "size_download": 1256, "size_upload": 0, "speed_download": 0.002854, "speed_upload": 0, "content_type": "text/html; charset=", "num_connects": 1, "time_redirect": 0, "num_redirects": 0, "ssl_verify_result": 0, "proxy_ssl_verify_result": 0, "filename_effective": "saved", "remote_ip": "93.184.216.34", "remote_port": 443, "local_ip": "192.168.0.1", "local_port": 44832, "http_version": "2", "scheme": "HTTPS", "curl_version": "libcurl/7.69.2 GnuTLS/3.6.12 zlib/1.2.11 brotli/1.0.7 c-ares/1.15.0 libidn2/2.3.0 libpsl/0.21.0 (+libidn2/2.3.0) nghttp2/1.40.0 librtmp/2.3" } 

    如果所有 Unix 工具都能这样用 JSON 格式输出信息就好了。

    26 条回复    2020-03-20 16:42:41 +08:00
    lisonfan
        1
    lisonfan  
       2020 年 3 月 18 日
    有个 httpie
    wdytoya
        2
    wdytoya  
       2020 年 3 月 18 日
    挺好的,小而美的优化
    chocotan
        3
    chocotan  
       2020 年 3 月 18 日
    我一般在后面加 | jq
    onion83
        4
    onion83  
       2020 年 3 月 18 日
    | jq +1
    langxuan
        5
    langxuan  
       2020 年 3 月 18 日
    | jq + 2
    ifsclimbing
        6
    ifsclimbing  
       2020 年 3 月 18 日 via iPhone
    是不是可以给所有命令加个前置 filter,处理结果成 json
    scriptB0y
        7
    scriptB0y  
       2020 年 3 月 18 日
    @chocotan
    @onion83
    @langxuan

    不是一个东西,这个功能不是将 HTTP Response 输出格式化,是 curl 本身的调试信息以 json 输出。
    weixiangzhe
        8
    weixiangzhe  
       2020 年 3 月 18 日
    我一般是用 fx
    curl xxxx | fx
    wujunze
        9
    wujunze  
       2020 年 3 月 18 日
    jq +10086 挺方便的
    httpie 也不错 就是卡一点
    MeteorCat
        10
    MeteorCat  
       2020 年 3 月 18 日 via Android
    这个可以呀,以后可以直接调用外部脚本 curl 批量保存嗅探网站的信息了
    hantsy
        11
    hantsy  
       2020 年 3 月 18 日
    Windows 下 的 Curl 是啥版本,好多问题。
    不得不转到 Cygwin 下用。
    Maco
        12
    Maco  
       2020 年 3 月 18 日
    curl xxx | | python -m json.tool
    Maco
        13
    Maco  
       2020 年 3 月 18 日
    理解错了
    est
        14
    est  
       2020 年 3 月 18 日
    然后你又需要一个命令行工具来解析 JSON 了。
    Narcissu5
        15
    Narcissu5  
       2020 年 3 月 18 日
    有点好奇这种工具是谁在维护
    wangyzj
        16
    wangyzj  
       2020 年 3 月 18 日
    jq 不错
    ps1aniuge
        17
    ps1aniuge  
       2020 年 3 月 19 日
    linux 版 powershell:Invoke-WebRequest 网址
    直接返回对象,内有属性方法,不香么?可以代替大部分 curl 的需求。
    Jirajine
        18
    Jirajine  
       2020 年 3 月 19 日 via Android
    @ps1aniuge 别逗了,你软自作聪明给 Invoke-WebRequest 默认搞得 wget 和 curl 两个别名不知道让包括楼上 @hantsy 在内的多少人满脸懵逼。
    littleshy
        19
    littleshy  
       2020 年 3 月 19 日
    @Jirajine #18 哈哈。Powershell core 7 里好像把这两个别名去掉了。
    ps1aniuge
        20
    ps1aniuge  
       2020 年 3 月 19 日
    @littleshy 哦这个我还没了解到,刚才试了下,果然如此。
    实际上我是建议有这两个别名的。

    psv7 中 curl,wget 还原大法=香!:
    ```
    new-alias -Name curl -Value Invoke-WebRequest ; new-alias -name wget -Value Invoke-WebRequest
    ```

    你要不想用 curl 别名,可以用 /usr/bin/curl 嘛。
    ps1aniuge
        21
    ps1aniuge  
       2020 年 3 月 19 日
    mkdir -p ~/.config/powershell ;Add-Content -Path $profile -Value 'new-alias -Name curl -Value Invoke-WebRequest ; new-alias -name wget -Value Invoke-WebRequest'
    CallMeReznov
        22
    CallMeReznov  
       2020 年 3 月 19 日
    帅 以后就不要在加 jq 了吗
    ChristopherWu
        23
    ChristopherWu  
       2020 年 3 月 19 日
    我一直想做这样子的项目,用 json 将所有命令行工具都包装一遍。
    什么 ls,pwd,grep,top 都添加一个选项 --json-output ,可以输出 json,然后就可以用 jq 玩弄了。


    文本化输出时 unix 的一大败笔,没法洗。
    Jirajine
        24
    Jirajine  
       2020 年 3 月 19 日 via Android
    @ps1aniuge @littleshy
    关键是,这个命令和 curl,wget 的行为都不同。
    习惯性地用 wget 下个文件,开始看起来正常,下完以后文件呢?
    和 curl 也是各种结果不一致,还会 following redirect。
    还有其他的各种灵异事件,cat 1.jpg > 2.jpg 出来一坨什么东西? nc 接管道收到的数据怎么和发的不一样? ls | grep xxx 怎么没效果?
    如此种种让不了解 PowerShell 的用户(没错,以前的我)满脸懵逼,实在忍无可忍去看 PowerShell 的文档,一看才知道怎一个坑字了得,自作聪明的内置别名,瞎胡闹的对象管道,用 git-bash 我都不想用它。
    ps1aniuge
        25
    ps1aniuge  
       2020 年 3 月 20 日
    @Jirajine 同人,这个词了解一下。
    你可以不用,但不能不让别人,用同人继续演义。
    国家允许“王者荣耀”酒 ,参见 《腾讯状告国 a 家 b 版 c 权局》
    qq 车,
    还有什么小说, [异界岳不群] [魔界张三丰]
    你在百度搜的东西和谷歌搜的结果也不一样。

    结果不一致又如何呢?只有甜豆浆才是正宗?

    史上武值没有大郎那么矮,金莲也是娴妇。
    是不是把看金-屏-妹的邪书的都灭了?
    那么肮脏,那么不正能量,你还不是照样钻被窝看禁书。你咋不大义凛然呢?

    你,他,我,curl 作者,再做一个 [解析网址成 dom 对象版 curl] ,谁也做不成和 curl 结果完全一致。又何必强求 ps 项目呢。

    就算做成了和 curl 完全一致的,完全一致,那直接用 curl 得了。那不是没用么?
    ps1aniuge
        26
    ps1aniuge  
       2020 年 3 月 20 日
    命令行解析网址,是一个学科。
    不同的人,有不同理解,

    先来的就是正宗么?如此说 ie 是正宗,chrome 应该被你抛弃。你 chrome 凭什么解析结果和 ie 不同?
    同理,
    上帝,圣母,谁更正宗,应该信谁???
    所以,
    希望大家看开些。
    最后,
    Invoke-WebReques 香不?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4696 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 03:39 PVG 11:39 LAX 19:39 JFK 22:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86