Comments (25)
@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.
那黄了呀, 截不了包了.
咋回事啊, 那咋整啊, 大佬带带我啊.
=.=
我待会回去把我的小米3翻出来试一试.
from bilibili-api.
非常抱歉现在才回复, 由于过年琐事缠身.
"直播中心" 页面的 API 已经在计划里了, 年后大概会开工.
说 "大概" 是因为我还得重构我的弹幕姬.
非常感谢提交 issue.
from bilibili-api.
我有一些问题想请教一下.
请问你是用什么方式来截包的, 我发现 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.
有关截包的问题, 建议使用 fiddler @czp3009
安装一个针对Android/IOS ssl 的插件,之后就能通过代理,来截取 Android的 https 包了。
涉及 TCP 包的话,建议使用 wireshark
from bilibili-api.
截包我用的是whistle
fiddler是个好东西,然而我是ubuntu.....
手机上安装证书,在wlan里设置全局代理
然后开启https截取
POST https://api.live.bilibili.com/AppExchange/silver2coin 这个api似乎b站修改了,刚刚测试的确返回了65530 invalid request
from bilibili-api.
from bilibili-api.
是否和 UA 有关呢?
from bilibili-api.
这是我最新截出的请求,兑换成功
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.
@czp3009 十分感谢,已经成功了。
之前失败的原因 (400
):
话说大佬,我能转发一下文章。再来加个友联嘛? 2333
https://i.a632079.me
from bilibili-api.
@a632079 欢迎转发。
友链加好了。
博客太丑了,一直在计划自己写一个,但是总是一个事情还没完就开新坑于是到现在还是这个样子,见笑了。
from bilibili-api.
from bilibili-api.
@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.
Ubuntu 16.04 | Node v6.12.3 | Android 6.0 | Bilibili APP 5.21.0
HTTPS截取工作正常,你可以尝试降级一下b站app
from bilibili-api.
已升级至Bilibili 5.22.1 https截取正常,应该是你那的问题
from bilibili-api.
我升级 node 到了 v9.6.1, 升级 APP 到了 5.23.0.
依然是这个问题.
其中, webview 部分会提示(由 Android System WebView 输出的错误页面) 证书不被设备信任.
但是输出的链接(https)用外部浏览器(系统自带浏览器与 chrome)是可以打开的(https).
这个问题太鸡巴了, 我尝试换个手机再试试.
from bilibili-api.
@Ldcr993519867
我尝试用 Android Studio 默认的 Android Emulator(qemu)(Android 8.0) 安装 Bilibili(5.23.0) 之后进行截包, 情况依然是浏览器可以正常访问 https 网站, 但是 Bilibili APP 提示 "电波无法到达呦".
所以我想问一下是不是我的截包姿势错了.
我是首先在 PC 上开启 whistle,
w2 start
然后在手机上访问对应的 whistle 的网页, 安装证书, 然后开启 whistle 的 https 拦截.
之后就出现了, chrome 可以正常访问 https 页面, 但是 B站 APP 硬是 "电波无法到达呦".
from bilibili-api.
→_→
你描述的操作无误啊....我也是这个操作.....
安装证书后通知栏是否有一个三角形感叹号图标的提示"网络可能受到监控"
(没有此提示则证书安装有误)
from bilibili-api.
我手机用的MIUI(Android8.0),模拟器里的是原生Android8.0。
安装证书之后都不会在通知栏有提示。都可以正常访问 https 网站(chrome)并且在 whistle 看到 https 通信,response 是正确的,确实截到了 https 的内容。
包括其他 app,也都正常的(在我的手机和模拟器),唯独 bilibili 不正常。
bilibili 在我的手机和模拟器,都会提示 "电波无法到达呦"。
-.-
from bilibili-api.
@Ldcr993519867 我在我的手机上截了一些图, 事情大概是这样的
在浏览器访问 https 页面, 是可以打开的, 并且 whistle 截到了数据
上面那个 WebView 抛出的错误里面的那个链接点击之后会打开系统浏览器, 是可以访问的, 并且 whistle 截到了数据
当在 Bilibili 应用内进行刷新操作时, whistle 没有任何输出, 也就是截不到任何数据包, 然后 bilibili 的刷新操作会立即失败而不是超时.
在 Android Emulator 上情况也是一样的, 所以我已经不知道怎么办了.
from bilibili-api.
这真是奇了怪了.....
你的操作没有问题啊......=-=.....
from bilibili-api.
找了一个 ios 设备, ios 居然能正常截包 ORZ
暂时就用这个 iphone 来截包了.
(上面提到的那三个 API 之前已经做好了, 我再把取消佩戴头衔什么的补一下)
from bilibili-api.
粉丝勋章, 头衔, 兑换硬币的 API 都已经完成了. 将在下一个版本中发布.
from bilibili-api.
那黄了呀, 截不了包了.
咋回事啊, 那咋整啊, 大佬带带我啊.
=.=
我待会回去把我的小米3翻出来试一试.
来自一万年后的更新
你抓包失败的原因我找到了=-=
你用的android8.0, 新版本android默认不信任用户安装的证书
要抓包得改apk添加一个xml节点开信任或者用root权限安装进系统证书库
from bilibili-api.
from bilibili-api.
Related Issues (20)
- 添加依赖后出错。。 HOT 1
- 请求提供说明文档 HOT 3
- 您好,我这里在你的model里加了根据roomId去“打开直播”和“关闭直播”,能否提到你的分支上? HOT 3
- 这个库有没有安卓版本限制呢? HOT 9
- 请教关于接口的使用 HOT 16
- 请求提供获取视频信息API HOT 3
- java的怎么不更新了呀 HOT 1
- 关于VcAPI中“意义不明”的dynamic_num接口的意义 HOT 1
- 获取到视频后怎么播放呢 HOT 3
- player-loader-1.8.2.min.js 有写live sub 消息格式 HOT 7
- 登录失败或验证码错误时无法获取错误信息 HOT 4
- 个人信息接口中的硬币数可能为小数 HOT 2
- 获取满级用户的主页时抛出异常 HOT 5
- 缺少动态(首页 -> 动态) API HOT 1
- bug 登录时未抛出异常 HOT 4
- DanmakuParser 在 Android 9 上出现错误(ERROR) HOT 1
- 带验证码登录返回-2001 HOT 2
- 能获取到4k视频吗? HOT 1
- 登录API无法使用,返回了错误信息 HOT 7
- 老哥求助版本不同 appkey和盐值不同 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bilibili-api.