# 获取当前话全部图片地址 | BAC Document
社区开源的第三方哔哩哔哩 API 文档

# 获取当前话全部图片地址

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

请求方式：POST

认证方式：Cookie（SESSDATA）/ APP

URL参数：

参数名 | 类型 | 内容 | 必要性 | 备注
--- | --- | --- | --- | ---
access_key | str | APP登录凭证 | 必要 | 使用APP鉴权方式时必填
appkey | str | cc8617fd6961e070 | 非必要 |
mobi_app | str | android_comic | 非必要 |
version | str | 4.21.0 | 非必要 |
build | str | 36421000 | 非必要 |
channel | str | bilicomic | 非必要 |
platform | str | android | 非必要 |
device | str | android | 非必要 |
buvid | str | XY118701XXXXXXXXX104911DXXXXXCAEXXXXE | 非必要 | 长度为37
machine | str |  | 非必要 | 手机品牌+型号
is_teenager | num | 0 | 非必要 |
no_recommend | num | 0 | 非必要 |
ts | num | 秒级时间戳 | 非必要 |

正文参数（ application/json ）：

参数名 | 类型 | 内容 | 必要性 | 备注
--- | --- | --- | --- | ---
epId（ep_id） | num | 当前话的id | 必要 |

json回复：

根对象：

字段 | 类型 | 内容 | 备注
--- | --- | --- | ---
code | num | 返回值 | 0：成功
msg | str | 错误信息 |
data | obj |  |

`data` 对象：

字段 | 类型 | 内容 | 备注
--- | --- | --- | ---
path | str | .index 文件路径 |
images | array | 本话图片信息 |
last_modified | str | 本话信息最后修改时间 |
host | str | `https://manga.hdslb.com` |
video | obj |  |

`images` 数组中的对象：

字段 | 类型 | 内容 | 备注
--- | --- | --- | ---
path | str | 图片的路径 | 不包含host
x | num | 图片宽度 | 单位：像素px
y | num | 图片高度 | 单位：像素px
video_path | str |  |
video_size | str |  |

`video` 对象：

字段 | 类型 | 内容 | 备注
--- | --- | --- | ---
svid | str |  |
filename | str |  |
route | str |  |
resource | array |  |
raw_width | str |  |
raw_height | str |  |
raw_rotate | str |  |
img_urls | array |  |
bin_url | str |  |
img_x_len | num |  |
img_x_size | num |  |
img_y_len | num |  |
img_y_size | num |  |

示例：

    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_key | str | APP登录凭证 | 必要 | 使用APP鉴权方式时必填
appkey | str | cc8617fd6961e070 | 非必要 |
mobi_app | str | android_comic | 非必要 |
version | str | 4.21.0 | 非必要 |
build | str | 36421000 | 非必要 |
channel | str | bilicomic | 非必要 |
platform | str | android | 非必要 |
device | str | android | 非必要 |
buvid | str | XY118701XXXXXXXXX104911DXXXXXCAEXXXXE | 非必要 | 长度为37
machine | str | samsung+SM-G9730 | 非必要 | 手机品牌+型号
is_teenager | num | 0 | 非必要 |
no_recommend | num | 0 | 非必要 |
ts | num | 秒级时间戳 | 非必要 |

正文参数（ application/json ）：

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

json回复：

根对象：

字段 | 类型 | 内容 | 备注
--- | --- | --- | ---
code | num | 返回值 | 0：成功
msg | str | 错误信息 |
data | array |  |

`data` 数组中的对象：

字段 | 类型 | 内容 | 备注
--- | --- | --- | ---
url | str | 图片下载的地址 | 此时网址开头 https://manga.hdslb.com
token | str | 图片下载需要的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`均无法获取