Git Product home page Git Product logo

Comments (25)

czp3009 avatar czp3009 commented on June 15, 2024 1

@a632079 Android客户端的登录和 Web 不一样,不需要验证(指滑动验证),但是hash code有时间限制,估计有效时间只有五秒。也就是说,五秒钟前用这个hash加密了密码之后,五秒之后这个密码密文就是无效的,所以手动测试会测不出来(cannot decrypt rsa password)。

有关 sign 算法以及登录的问题我之前写过一篇博文 https://www.hiczp.com/post-145.html

客户端提交的内容可以分为几个类别:UA以及其他固定请求头,固定参数,API参数,sign

API参数是指这个API所需的参数,固定参数是 platform,device 等。

目前已知的所有API(service本身,不考虑日志),都不会读取请求头,所以跟UA是没有关系的。(本项目之所以UA什么的都写了只是为了百分百模拟客户端)

少量API会要求一个或多个固定参数里的参数(比如 platform)

passport有关的API全部不会读取固定参数(博文上有图表达了登录有关的参数)

from bilibili-api.

czp3009 avatar czp3009 commented on June 15, 2024 1

那黄了呀, 截不了包了.

咋回事啊, 那咋整啊, 大佬带带我啊.

=.=

我待会回去把我的小米3翻出来试一试.

from bilibili-api.

czp3009 avatar czp3009 commented on June 15, 2024

非常抱歉现在才回复, 由于过年琐事缠身.

"直播中心" 页面的 API 已经在计划里了, 年后大概会开工.

说 "大概" 是因为我还得重构我的弹幕姬.

非常感谢提交 issue.

from bilibili-api.

czp3009 avatar czp3009 commented on June 15, 2024

我有一些问题想请教一下.

请问你是用什么方式来截包的, 我发现 B站 客户端(Android)升级到最新版本之后, 把所有 API 都换成了 https 的, 导致无法得到请求内容. 客户端反编译之后的代码, 很多都混淆过了, 而且他的代码里视图代码和后台代码混在一起, 很难阅读(我之前只看了它用什么框架以及基本架构).

还有一个事情是关于 POST https://api.live.bilibili.com/AppExchange/silver2coin 这个 API.

(参数仅 access_key, appkey, sign, Query 参数)

使用 POST 方式时, 返回

{
	"code": 65530,
	"msg": "invalid request",
	"message": "invalid request",
	"data": "bad token"
}

使用 GET 方式时, 返回

{
	"code": 500,
	"msg": "调用wallet.exchange失败",
	"message": "调用wallet.exchange失败",
	"data": []
}

在客户端上完成一次兑换之后, POST 方式的请求返回值不变, GET 方式的变为

{
	"code": 403,
	"msg": "每天最多能兑换 1 个",
	"message": "每天最多能兑换 1 个",
	"data": []
}

所以这个让人摸不到头脑. 于是我试图自己截包看一下, 发现已经换成 https 了, 于是有了第一个问题.

from bilibili-api.

a632079 avatar a632079 commented on June 15, 2024

有关截包的问题, 建议使用 fiddler @czp3009
安装一个针对Android/IOS ssl 的插件,之后就能通过代理,来截取 Android的 https 包了。
涉及 TCP 包的话,建议使用 wireshark

from bilibili-api.

SakuraKoi avatar SakuraKoi commented on June 15, 2024

截包我用的是whistle
fiddler是个好东西,然而我是ubuntu.....
手机上安装证书,在wlan里设置全局代理
然后开启https截取

POST https://api.live.bilibili.com/AppExchange/silver2coin 这个api似乎b站修改了,刚刚测试的确返回了65530 invalid request

from bilibili-api.

a632079 avatar a632079 commented on June 15, 2024

💩 话说,有尝试翻译成 nodejs, 很奇怪一直登入不上。 气哭

from bilibili-api.

a632079 avatar a632079 commented on June 15, 2024

是否和 UA 有关呢?

from bilibili-api.

SakuraKoi avatar SakuraKoi commented on June 15, 2024

这是我最新截出的请求,兑换成功

POST /AppExchange/silver2coin?access_key=<AccessToken已删除>&actionKey=appkey&appkey=1d8b6e7d45233436&build=5210000&device=android&mobi_app=android&platform=android&ts=1519125003&sign=bdfa5871267dd698b40b4b4ce2b921ba HTTP/1.1
Display-ID: 3874987-1519124057
Buvid: B6D6102C-7A7F-485F-9B37-50DA191AC2BD19984infoc
User-Agent: Mozilla/5.0 BiliDroid/5.21.0 ([email protected])
Device-ID: JhZ0QnpMLUx4TihNMU0xATIDNgFlAzADMFZnXjgKaA
Content-Length: 0
Host: api.live.bilibili.com
Connection: Keep-Alive
Accept-Encoding: gzip
Cookie: sid=loasvgak
X-Kamigakusi-ID:
x-forwarded-for: 192.168.3.15

这是Responce

HTTP/1.1 200 OK
Date: Tue, 20 Feb 2018 11:10:03 GMT
Content-Type: application/json
Content-Length: 151
Connection: keep-alive
L: v
Server: swoole-http-server
X-TKID: 1519125003558282161871
Expires: Tue, 20 Feb 2018 11:10:02 GMT
Cache-Control: no-cache
X-Cache: BYPASS from cn-jlcc-cu-w-01.hdslb.com

{"code":0,"msg":"兑换成功","message":"兑换成功","data":{"silver":"267050","gold":"1000","tid":"ae4472de4753a160736f3374084489f32122","coin":1}}

from bilibili-api.

a632079 avatar a632079 commented on June 15, 2024

@czp3009 十分感谢,已经成功了。
default
之前失败的原因 (400):

  • 错误的编码方式 , nodejs 默认是: RSA_PKCS1_OAEP_PADDING
    default

话说大佬,我能转发一下文章。再来加个友联嘛? 2333
https://i.a632079.me

from bilibili-api.

czp3009 avatar czp3009 commented on June 15, 2024

@a632079 欢迎转发。

友链加好了。

博客太丑了,一直在计划自己写一个,但是总是一个事情还没完就开新坑于是到现在还是这个样子,见笑了。

from bilibili-api.

a632079 avatar a632079 commented on June 15, 2024

❤️ 子项目 https://github.com/a632079/bilibili-api 暂时只写了个登入, 友链稍晚添加。感谢帮助

from bilibili-api.

czp3009 avatar czp3009 commented on June 15, 2024

@Ldcr993519867 最近稍微空了一些, 安装了 whistle 试了一下.

Ubuntu 16.04 | Node v6.11.5 | Android 8.0.0 | Bilibili APP 5.22.1

(以下只讲 https)

对于在浏览器上打开普通网页, 它工作的很好, 对于普通的 APP, 例如 高德地图, 钉钉, 它也工作的很好.

对于一些安全级别较高的软件, 例如 Google Play, Gmail, APP 将提示 未连接到互联网, 推测是应用内置了 SSL 证书或者 APP 会校验整个证书链(Google Play 刷新页面时, whistle 抓到 0 个包, 刷新操作立即返回并提示 未连接到互联网).

然而, 这个 B站 客户端, 居然也是一样的情况, 所有操作都会立即返回并提示 电波无法到达, 并且 whistle 也是抓到 0 个包.

通过重启手机排除了手机自身或者 APP 自身的 SSL 缓存的问题.

通过先不安装 whistle 的证书访问自己的博客, 安装后立即再访问一次, 排除了路由器缓存 SSL 的可能性.

确认 B站 客户端不是因为 SSL 缓存而导致这个情况发生的. 可能 B站 客户端内置了证书链.

我不清楚是只有我是这样的还是确实是这样的.

from bilibili-api.

SakuraKoi avatar SakuraKoi commented on June 15, 2024

Ubuntu 16.04 | Node v6.12.3 | Android 6.0 | Bilibili APP 5.21.0
HTTPS截取工作正常,你可以尝试降级一下b站app

from bilibili-api.

SakuraKoi avatar SakuraKoi commented on June 15, 2024

已升级至Bilibili 5.22.1 https截取正常,应该是你那的问题

from bilibili-api.

czp3009 avatar czp3009 commented on June 15, 2024

我升级 node 到了 v9.6.1, 升级 APP 到了 5.23.0.

依然是这个问题.

其中, webview 部分会提示(由 Android System WebView 输出的错误页面) 证书不被设备信任.

但是输出的链接(https)用外部浏览器(系统自带浏览器与 chrome)是可以打开的(https).

这个问题太鸡巴了, 我尝试换个手机再试试.

from bilibili-api.

czp3009 avatar czp3009 commented on June 15, 2024

@Ldcr993519867
我尝试用 Android Studio 默认的 Android Emulator(qemu)(Android 8.0) 安装 Bilibili(5.23.0) 之后进行截包, 情况依然是浏览器可以正常访问 https 网站, 但是 Bilibili APP 提示 "电波无法到达呦".

所以我想问一下是不是我的截包姿势错了.

我是首先在 PC 上开启 whistle,

w2 start

然后在手机上访问对应的 whistle 的网页, 安装证书, 然后开启 whistle 的 https 拦截.

之后在手机上的 wifi 设置中, 设置代理, 就像这样
image

之后就出现了, chrome 可以正常访问 https 页面, 但是 B站 APP 硬是 "电波无法到达呦".

from bilibili-api.

SakuraKoi avatar SakuraKoi commented on June 15, 2024

→_→
你描述的操作无误啊....我也是这个操作.....
安装证书后通知栏是否有一个三角形感叹号图标的提示"网络可能受到监控"
(没有此提示则证书安装有误)

from bilibili-api.

czp3009 avatar czp3009 commented on June 15, 2024

我手机用的MIUI(Android8.0),模拟器里的是原生Android8.0。

安装证书之后都不会在通知栏有提示。都可以正常访问 https 网站(chrome)并且在 whistle 看到 https 通信,response 是正确的,确实截到了 https 的内容。

包括其他 app,也都正常的(在我的手机和模拟器),唯独 bilibili 不正常。

bilibili 在我的手机和模拟器,都会提示 "电波无法到达呦"。

-.-

from bilibili-api.

czp3009 avatar czp3009 commented on June 15, 2024

@Ldcr993519867 我在我的手机上截了一些图, 事情大概是这样的

首先安装证书
image

然后通知栏里什么都没有(从来都没有, 重启也不会有)
image

在浏览器访问 https 页面, 是可以打开的, 并且 whistle 截到了数据
image

但是 Bilibili 却是这样的
image

还有些页面是这样的
image

另一些是这样的
image

WebView 是这样的
image

上面那个 WebView 抛出的错误里面的那个链接点击之后会打开系统浏览器, 是可以访问的, 并且 whistle 截到了数据
image

当在 Bilibili 应用内进行刷新操作时, whistle 没有任何输出, 也就是截不到任何数据包, 然后 bilibili 的刷新操作会立即失败而不是超时.

在 Android Emulator 上情况也是一样的, 所以我已经不知道怎么办了.

from bilibili-api.

SakuraKoi avatar SakuraKoi commented on June 15, 2024

这真是奇了怪了.....
你的操作没有问题啊......=-=.....

from bilibili-api.

czp3009 avatar czp3009 commented on June 15, 2024

找了一个 ios 设备, ios 居然能正常截包 ORZ

暂时就用这个 iphone 来截包了.

(上面提到的那三个 API 之前已经做好了, 我再把取消佩戴头衔什么的补一下)

from bilibili-api.

czp3009 avatar czp3009 commented on June 15, 2024

粉丝勋章, 头衔, 兑换硬币的 API 都已经完成了. 将在下一个版本中发布.

from bilibili-api.

SakuraKoi avatar SakuraKoi commented on June 15, 2024

那黄了呀, 截不了包了.

咋回事啊, 那咋整啊, 大佬带带我啊.

=.=

我待会回去把我的小米3翻出来试一试.

来自一万年后的更新
你抓包失败的原因我找到了=-=
你用的android8.0, 新版本android默认不信任用户安装的证书
要抓包得改apk添加一个xml节点开信任或者用root权限安装进系统证书库

from bilibili-api.

czp3009 avatar czp3009 commented on June 15, 2024

from bilibili-api.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.