获取当前话全部图片地址

https://manga.bilibili.com/twirp/comic.v1.Comic/GetImageIndex

请求方式:POST

认证方式:Cookie(SESSDATA)/ APP

URL参数:

参数名类型内容必要性备注
access_keystrAPP登录凭证必要使用APP鉴权方式时必填
appkeystrcc8617fd6961e070非必要
mobi_appstrandroid_comic非必要
versionstr4.21.0非必要
buildstr36421000非必要
channelstrbilicomic非必要
platformstrandroid非必要
devicestrandroid非必要
buvidstrXY118701XXXXXXXXX104911DXXXXXCAEXXXXE非必要长度为37
machinestr非必要手机品牌+型号
is_teenagernum0非必要
no_recommendnum0非必要
tsnum秒级时间戳非必要

正文参数( application/json ):

参数名类型内容必要性备注
epId(ep_id)num当前话的id必要

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
msgstr错误信息
dataobj

data 对象:

字段类型内容备注
pathstr.index 文件路径
imagesarray本话图片信息
last_modifiedstr本话信息最后修改时间
hoststrhttps://manga.hdslb.com
videoobj

images 数组中的对象:

字段类型内容备注
pathstr图片的路径不包含host
xnum图片宽度单位:像素px
ynum图片高度单位:像素px
video_pathstr
video_sizestr

video 对象:

字段类型内容备注
svidstr
filenamestr
routestr
resourcearray
raw_widthstr
raw_heightstr
raw_rotatestr
img_urlsarray
bin_urlstr
img_x_lennum
img_x_sizenum
img_y_lennum
img_y_sizenum

示例:

curl -L -X POST 'https://manga.bilibili.com/twirp/comic.v1.Comic/GetImageIndex' \
-H 'Cookie: SESSDATA=xxx;' \
-H 'Content-Type: application/json' \
--data-raw '{
    "ep_id": 321912
}'
查看响应示例:
{
  "code": 0,
  "msg": "",
  "data": {
    "path": "/bfs/manga/26564/321912/data.index?token=80eab62fef85c1c134a6399f817a938f&ts=63404145",
    "images": [
      {
        "path": "/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg",
        "x": 1600,
        "y": 2268,
        "video_path": "",
        "video_size": "0"
      },
      {
        "path": "/bfs/manga/bf1c48540b68f473b429317d8f6fa8cdb6eed3a5.jpg",
        "x": 1600,
        "y": 2268,
        "video_path": "",
        "video_size": "0"
      },
      {
        "path": "/bfs/manga/a46cfe90cfb49c67a4dbfc0002e5bc3d87d02963.jpg",
        "x": 1600,
        "y": 2268,
        "video_path": "",
        "video_size": "0"
      }
    ],
    "last_modified": "2019-05-13 21:15:53",
    "host": "https://manga.hdslb.com",
    "video": {
      "svid": "",
      "filename": "",
      "route": "",
      "resource": [],
      "raw_width": "0",
      "raw_height": "0",
      "raw_rotate": "0",
      "img_urls": [],
      "bin_url": "",
      "img_x_len": 10,
      "img_x_size": 160,
      "img_y_len": 10,
      "img_y_size": 90
    }
  }
}

获取某一图片的token

https://manga.bilibili.com/twirp/comic.v1.Comic/ImageToken

请求方式:POST

认证方式:Cookie(SESSDATA)/ APP

URL参数:

参数名类型内容必要性备注
access_keystrAPP登录凭证必要使用APP鉴权方式时必填
appkeystrcc8617fd6961e070非必要
mobi_appstrandroid_comic非必要
versionstr4.21.0非必要
buildstr36421000非必要
channelstrbilicomic非必要
platformstrandroid非必要
devicestrandroid非必要
buvidstrXY118701XXXXXXXXX104911DXXXXXCAEXXXXE非必要长度为37
machinestrsamsung+SM-G9730非必要手机品牌+型号
is_teenagernum0非必要
no_recommendnum0非必要
tsnum秒级时间戳非必要

正文参数( application/json ):

参数名类型内容必要性备注
urlsstr请求token的图片地址必要[\"https://i0.hdslb.com{path}\"]
{path}代表图片的相对网站路径,支持jpg和webp

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
msgstr错误信息
dataarray

data 数组中的对象:

字段类型内容备注
urlstr图片下载的地址此时网址开头 https://manga.hdslb.com
tokenstr图片下载需要的token

示例:

curl -L -X POST 'https://manga.bilibili.com/twirp/comic.v1.Comic/ImageToken' \
-H 'Cookie: SESSDATA=xxx;' \
-H 'Content-Type: application/json' \
--data-raw '{
    "urls": "[\"https://i0.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg\"]"
}'
查看响应示例:
{
  "code": 0,
  "msg": "",
  "data": [
    {
      "url": "https://manga.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg",
      "token": "36931815abb35857627a22c347dc1c86&ts=634045c2"
    }
  ]
}

下载图片

请求方式:GET

在上一步获取token的基础上,构建如下的url

例如获取到此token

{
  "code": 0,
  "msg": "",
  "data": [
    {
      "url": "https://manga.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg",
      "token": "36931815abb35857627a22c347dc1c86&ts=634045c2"
    }
  ]
}

则访问以下网址即可,注意需要添加?token=。此网址有效期较短

https://manga.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg?token=36931815abb35857627a22c347dc1c86&ts=634045c2

:若不加取图 Token 直接访问 https://(i0|i1).hdslb.com/bfs/(manga|new_dyn|archive)/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg均无法获取