『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 3909|回复: 14

[技术探讨] 关于安吉星(上汽通用)旗下别克、凯迪拉克、雪弗兰API

[复制链接]

20

主题

211

帖子

1535

积分

金牌会员

Rank: 6Rank: 6

积分
1535
金钱
1324
HASS币
10
发表于 2023-7-8 12:35:40 | 显示全部楼层 |阅读模式
本帖最后由 zg990725 于 2023-7-8 12:43 编辑

关于安吉星(上汽通用)旗下别克、凯迪拉克、雪弗兰在中国区未提供API,北美市场有提供API。经过抓包,如图:
一.  安吉星有配置三个类似的系统:
A.     api. shanghaionstar. com,登录接口为手机账户密码通过JWT编码后POST,响应也是JWT编码,通过签名算法得到Token。其他的接口,Header请求头携带Authorization:Bearer {TOKEN} 即可返回车辆相关JSON数据。目前,除了控制车辆外,其他查询功能只要在APP有的全可以得到JSON。
B.     www .onstar. com .cn,手机APP子系统,采用api.shanghaionstar的TOKEN完成车辆信息的查询。
C.     www. onstar.com. cn/mssos/sos/wechat,微信公众号,由微信授权code得到cookie,数分钟后失效。在cookie未失效状态,所有功能可用,包含车辆解锁以及启动发动机。
二.  问题:
A.     针对api.shanghaionstar.com,在控制车辆前,需要再次确认二次密码,携带参数POST不成功。
B.     针对微信公众号,得到code可以通过抓包得到,但时效很有限,数分钟将失效。
    .疑问:通用汽车在北美市场面向用户提供API,上汽通用在媒体公开承诺向用户提供API,同时,关于tesla也未向用户提供API,网络上存在两套API,厂家未及时封该API接口,默许存在。那么我的疑问是采用抓包形式获得安吉星API,仅仅采集车主自己车辆的JSON信息是否合法。
66666.png

回复

使用道具 举报

20

主题

211

帖子

1535

积分

金牌会员

Rank: 6Rank: 6

积分
1535
金钱
1324
HASS币
10
 楼主| 发表于 2023-7-8 12:39:13 | 显示全部楼层
如果仅仅是在HAS里显示汽车的油量,里程表,胎压等信息,也是很简单,  直接得到的JSON数据即可.
需要控制车辆要难一点.
回复

使用道具 举报

20

主题

211

帖子

1535

积分

金牌会员

Rank: 6Rank: 6

积分
1535
金钱
1324
HASS币
10
 楼主| 发表于 2023-7-8 12:54:28 | 显示全部楼层
//cURL封装,满足同时支持POST,GET,PUT,DELETE,以及携带cookie完成模拟登录,获取数据.
function requestData($requestUrl, $method='POST', $header, $requestParam, $cookie_file='', $cookieState = 0){
        if(empty($requestUrl) || empty($requestParam)){
                return false;
        }
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$requestUrl);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        if($method == 'POST') {
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $requestParam);
        }
        if ($method == 'PUT' || strtoupper($method) == 'DELETE'){
                curl_setopt($ch, CURLOPT_POSTFIELDS, $requestParam);
                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
        }
        if ($cookieState == true){
                curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
        }elseif($cookieState == false){
                curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
        }
        curl_setopt($ch,CURLINFO_HEADER_OUT,true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        $data = curl_exec($ch);
    //var_dump($header);
        /* echo '=================================<br>';
        echo '请求头Header: '.$header['2'].'<br>';
        echo '请求地址: ['.$method.']'.$requestUrl.'<br>';
        echo '请求参数: '.$requestParam.'<br>';
        echo '响应头信息: '.curl_getinfo($ch, CURLINFO_HEADER_OUT).'<br>';
        echo '=================================<br>'; */
        curl_close($ch);
        return $data;
}
回复

使用道具 举报

20

主题

211

帖子

1535

积分

金牌会员

Rank: 6Rank: 6

积分
1535
金钱
1324
HASS币
10
 楼主| 发表于 2023-7-9 15:08:56 | 显示全部楼层
本帖最后由 zg990725 于 2023-7-9 15:13 编辑

杭州水务  (Token有效期数天)
A.登录地址:http://wt.hzwgc.com/wangting/#/home
B.顺利进入后浏览器窗口按 F12打开调式 点 “综合查询”-“客户信息查询”;然后看F12 中的网络,点V2.JSON,预览下是不是你要的数据, 点载荷,将看到
C.requestPara={"meterNumber":"100XXXX","startDate":"20230101","endDate":"20231231","payStatus":2,"token":"XXXXXXXXXXXXXX","waterCorpId":3,"UNID":"","areaId":0,"accountType":"XJ","apiType":"PC","appVersion":"1.0.2"}qBe3uSlRhmHIhQ","waterCorpId":3,"UNID":"","areaId":0,"accountType":"XJ","apiType":"PC","appVersion":"1.0.2"}Para={"meterNumber":"100XXXXX","startDate":"20230101","endDate":"20231231","payStatus":2,"token":"XXXXXXXXXXXXX","waterCorpId":3,"UNID":"","areaId":0,"accountType":"XJ","apiType":"PC","appVersion":"1.0.2"}
D.接下来我们对数据进行测试,建议POSTMAN, 在线网页版本也是可以,https://www.sojson.com/http/test.html
                999999.png                         999.png
回复

使用道具 举报

20

主题

211

帖子

1535

积分

金牌会员

Rank: 6Rank: 6

积分
1535
金钱
1324
HASS币
10
 楼主| 发表于 2023-7-9 15:28:47 | 显示全部楼层
杭州天然气 (Cookie有效期数天)
早期,官方为第三方留一个接口,  只要是注册过的手机号码,不需要短信验证或密码即可查看天然气帐单,以及用户家庭地址门牌号.
ht-service.hzgas.cn/app/login?phone=手机号码. 经过我投诉后厂家被迫关闭该接口.
A.打开 Charles;
B.微信公众号 "杭州天然气967266" - 点菜单 "19服务厅" 如下图,  得到Cookie
999999.png
回复

使用道具 举报

8

主题

2073

帖子

6053

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
6053
金钱
3980
HASS币
145

灌水之王

发表于 2023-7-10 15:41:47 | 显示全部楼层
别克安吉星车主路过顶下!!!!!!
回复

使用道具 举报

146

主题

2267

帖子

7002

积分

元老级技术达人

积分
7002
金钱
4730
HASS币
30
发表于 2023-7-10 16:03:45 | 显示全部楼层
zg990725 发表于 2023-7-9 15:28
杭州天然气 (Cookie有效期数天)
早期,官方为第三方留一个接口,  只要是注册过的手机号码,不需要短信验证或 ...

我也是杭州的,Cookie有效期就几天,后期是不是要获取,你有成功接入天然气和水费吗,能不能共享下
回复

使用道具 举报

20

主题

211

帖子

1535

积分

金牌会员

Rank: 6Rank: 6

积分
1535
金钱
1324
HASS币
10
 楼主| 发表于 2023-7-10 17:30:22 | 显示全部楼层
水费,  是可以实现用手机账户密码登录得到JSON的, 不难;
天然气手欠,被向官方投诉封闭了该接口.  原来仅仅凭一个手机号, 不需要密码均可以获取到JSON
回复

使用道具 举报

20

主题

211

帖子

1535

积分

金牌会员

Rank: 6Rank: 6

积分
1535
金钱
1324
HASS币
10
 楼主| 发表于 2023-7-17 13:38:42 | 显示全部楼层
我尝试用PHP Curl封装了API对接函数,不会写python,
回复

使用道具 举报

20

主题

211

帖子

1535

积分

金牌会员

Rank: 6Rank: 6

积分
1535
金钱
1324
HASS币
10
 楼主| 发表于 2023-7-22 22:08:27 | 显示全部楼层
使用Restful sensor 解析json
sensor:
  - platform: rest
    name: shenzhentong
    resource: http://api.oupag.com/dev/api/shenzhentong.php?cardno=293005762
    scan_interval: 1200
    value_template: '{{ value_json.card_balance }}'
    json_attributes:
      - card_balance
      - balance_time
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 21:06 , Processed in 0.549363 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表