首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

吐槽一下华为光伏的 API 文档

  •  
  •   paulw54jrn · 9 天前 · 3724 次点击

    最近装了太阳能板,想用 lambda + grafana + prometheus 爬一下逆变器的各种数据做个简单的 dashboard.


    然后发现华为光伏的 API 文档写的实在有点粗糙..

    还有一些不能理解的地方:

    • https 证书居然还是 self signed,居然连个证书都不舍得?
    • 登录居然要把用户名和密码在 URL 里面传...
    • 登录失败不返回 401,返回 200...
      curl -vkX POST \
        'https://au1.fusionsolar.huawei.com:27200/openApi/login?userName=FOO&password=BAR'
      
      *   Trying 54.153.220.93...
      * TCP_NODELAY set
      * Connected to au1.fusionsolar.huawei.com (54.153.220.93) port 27200 (#0)
      * ALPN, offering h2
      * ALPN, offering http/1.1
      * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
      * successfully set certificate verify locations:
      *   CAfile: /etc/ssl/cert.pem
        CApath: none
      * TLSv1.2 (OUT), TLS handshake, Client hello (1):
      * TLSv1.2 (IN), TLS handshake, Server hello (2):
      * TLSv1.2 (IN), TLS handshake, Certificate (11):
      * TLSv1.2 (IN), TLS handshake, Request CERT (13):
      * TLSv1.2 (IN), TLS handshake, Server finished (14):
      * TLSv1.2 (OUT), TLS handshake, Certificate (11):
      * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
      * TLSv1.2 (OUT), TLS change cipher, Client hello (1):
      * TLSv1.2 (OUT), TLS handshake, Finished (20):
      * TLSv1.2 (IN), TLS change cipher, Client hello (1):
      * TLSv1.2 (IN), TLS handshake, Finished (20):
      * SSL connection using TLSv1.2 / AES128-SHA
      * ALPN, server did not agree to a protocol
      * Server certificate:
      *  subject: C=CN; ST=Guangdong; L=Shenzhen; O=Huawei; OU=Network Energy; CN=NetEcoServer
      *  start date: Mar 18 01:23:06 2015 GMT
      *  expire date: Mar 13 01:23:06 2035 GMT
      *  issuer: C=CN; O=huawei; OU=Network Energy; CN=NEPL PKI
      *  SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway.
      > POST /openApi/login?userName=FOO&password=BAR HTTP/1.1
      > Host: au1.fusionsolar.huawei.com:27200
      > User-Agent: curl/7.54.0
      > Accept: */*
      >
      < HTTP/1.1 200 OK
      < Date: Tue, 08 Oct 2019 13:02:55 GMT
      < Set-Cookie: JSESSIONID=1jsi0rnxij5mzokex34wnr7ig;Path=/;Secure;HttpOnly
      < Expires: Thu, 01 Jan 1970 00:00:00 GMT
      < Cache-Control: no-cache
      < X-Frame-Options: SAMEORIGIN
      < X-Download-Options: noopen
      < X-XSS-Protection: 1;mode=block
      < Strict-Transport-Security: max-age=31536000;includeSubdomains
      < X-Content-Type-Options: nosniff
      < Vary: Accept-Encoding, User-Agent
      < Transfer-Encoding: chunked
      <
      {"errorMsg":309}
      * Connection #0 to host au1.fusionsolar.huawei.com left intact
      

    文档参考:

    32 回复  |  直到 2019-10-09 22:02:19 +08:00
        1
    droiz   9 天前   ♥ 1
    凭我对华为软件部门的了解,这属于正常操作...
        2
    paulw54jrn   9 天前
    相比之下硬件文档实在强太多了
    https://support.huawei.com/enterprise/en/doc/EDOC1100011912

    ----
    self sign 和用户名密码走 query string 真的不能忍
        3
    nosilence   9 天前
    正常操作,正常操作
        4
    saulshao   9 天前
    这个属于软件部门的正常水平,要知道申请个证书是需要某级别领导审批的。根本就说不清楚为什么这东西还要花钱?
        5
    wangyzj   9 天前
    谁说一定要走 jwt 模式或者 header auth 模式就一定是好的?
    证书也是钱啊
    200+errcode 也挺好,省着 catch 了
        6
    xabc   9 天前 via iPhone
    我的问题,卤煮房子是别墅独栋那种 还是 普通顶层?
        7
    hakono   9 天前   ♥ 2
    证书太贵,需要领导审批
    response 一律 200 附带错误码,是因为需要自定义大量错误码自己处理

    把账号密码放到 url 里传………………………………
    对不起,我真的编不下去了,没法洗地了…………
        8
    paulw54jrn   9 天前 via Android
    @wangyzj
    没有人说一定要走 JWT 或者 header auth.

    但是用户名密码走 Query string 这个怎么洗?
    用户名密码全部明文记在了 Http log 里面这么基础的安全问题怎么洗?

    关于证书要花钱,这么大个企业一年千把块人民币真的出不起吗?现在导致 https 形同虚设
        9
    OSF2E   9 天前
    可能是造火箭的团队临时被拉过来拧螺丝吧
        10
    serge001   9 天前
    可能是外包做的
        11
    sunziren   9 天前
    你住别墅?
        12
    stoneabc   9 天前
    这种可能真的是外包做的…
        13
    qwerthhusn   9 天前
    八成是外包搞的,因为我曾经干过华为的外包。。。
    没有 80/443 端口给用
    没有证书(外包给的外网权限非常低,大部分网站都访问不了,当然也没发领个免费的证书)
    http 200 一把梭,这个很正常
        14
    cloudzhou   9 天前
    @paulw54jrn 但是我看文档,通过 POST 传递,所以你用 form 提交也是可以的,只是你自己的代码怎么写而已
        15
    collery   9 天前
    嗯,都是外包的锅。毕竟除了硬件都是外包
        16
    alphatoad   9 天前 via iPhone
    讲道理,有 https 账号密码放 query 不是一个特别大的问题
        17
    huijiewei   9 天前   ♥ 1
    @alphatoad 你搞笑么。服务器日志不脱敏的?
        18
    alphatoad   9 天前 via iPhone   ♥ 2
    @huijiewei 我没有搞笑,但是我只想到了密码学安全,确实没有想到这一层,你说的对
        19
    Juggernaut   9 天前
    华为就这水平
        20
    aguesuka   8 天前 via Android
    正常,海康的接口还是 http,hash 做检验。转动全省 500 多个球机的 aip
        21
    subpo   8 天前
    对华为的软件水平无力吐槽

    对楼主装的光伏很感兴趣,详细说说?
        22
    jjshare   8 天前
    朋友多大的屋顶,大概费用多少,我最近寻思着是不是要出一个家用智能光伏解决方案
        23
    wind98   8 天前
    外包做的,毕竟是硬件公司
        24
    seansong   8 天前
    登陆失败返回 200 很正常吧,http 状态码指的是你的协议请求是否成功了,而登陆失败是业务状态,协议返回 200,业务状态码返回登陆失败,这不是常规操作么
        25
    paulw54jrn   8 天前
    @cloudzhou 嗯,说的对,后来又试了一下走 `application/x-www-form-urlencoded` 在 POST body 里面是可行的。
    https://forum.huawei.com/enterprise/en/communicating-with-neteco-through-an-openapi-user/thread/512431-100027 这里面的截图带歪了,里面走的是 query string
        26
    paulw54jrn   8 天前
    @jjshare

    屋顶具体面积没量过.

    目前方案是:
    - 20 片 日升 RSM120-6-330M http://www.risenenergy.com/uploadfile/201908/85d961e3f3.pdf
    - 华为 SUN20005KTL
    - 正泰 DTSU666-H 电表

    因为不在国内安装,具体费用可能参考价值不大。
        27
    paulw54jrn   8 天前
    @seansong

    API 走 RPC 风格或者 REST 风格这个更多是个人偏好。

    但是对于在 http 协议里面已经有明确定义的状态个人觉得是直接走状态码更加简洁清晰。
        28
    bwd1991   8 天前
    把华为想的太高了?
    ppt 公司
        29
    Chry3anthemum   8 天前 via Android
    @bwd1991 软件同意,硬件那波是在难以苟同
        30
    realpg   8 天前
    华为基本盘……
    你这是没见到曾经的 mib file
        31
    droiz   8 天前 via iPhone
    @collery 也不全是,但内部一些软件系统也是稀烂
        32
    lolizeppelin   8 天前
    我来洗

    内部 http 服务为了性能简化了功能,会忽略所有 body 数据,这不就结了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4239 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 33ms · UTC 06:30 · PVG 14:30 · LAX 23:30 · JFK 02:30
    ♥ Do have faith in what you're doing.