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

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

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

    最近装了太阳能板,想用 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   66 天前   ♥ 1
    凭我对华为软件部门的了解,这属于正常操作...
        2
    paulw54jrn   66 天前
    相比之下硬件文档实在强太多了
    https://support.huawei.com/enterprise/en/doc/EDOC1100011912

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

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

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

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

    对楼主装的光伏很感兴趣,详细说说?
        22
    jjshare   66 天前
    朋友多大的屋顶,大概费用多少,我最近寻思着是不是要出一个家用智能光伏解决方案
        23
    wind98   66 天前
    外包做的,毕竟是硬件公司
        24
    seansong   66 天前
    登陆失败返回 200 很正常吧,http 状态码指的是你的协议请求是否成功了,而登陆失败是业务状态,协议返回 200,业务状态码返回登陆失败,这不是常规操作么
        25
    paulw54jrn   65 天前
    @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   65 天前
    @jjshare

    屋顶具体面积没量过.

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

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

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

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

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