Blog

Acfun api

2019-12-31

#Acfun
#Acsign

一些关于acfun的api

登录相关

登录相关的接口就两个,移动端和网页端

网页登录

Request

  • Method: POST
  • URL: https://id.app.acfun.cn/rest/web/login/signin
  • Headers:
    • Content-Type: application/x-www-form-urlencoded
  • Body:
JSON
    "username": "YOUR_USERNAME",
    "password": "YOUR_PASSWORD",
    "key": null,
    "captcha": null

Response

  • Body
    • success
JSON
{
  "result": 0,
  "img": "YOUR_AVATAR",
  "userId": 1,
  "username": "YOUR_USERNAME"
}
  • failure
JSON
{
  "result": 100001005,
  "error_msg": "帐号不存在或密码错误"
}
JSON
{
  "result":100001016,
  "error_msg":"图片验证码错误"
}

注:只有短期内多次登录才需要输入验证码,所以keycaptcha只需留空,key获取登录验证码有关,captcha即图片验证码在视觉上所展示的由26个英文字母及10个阿拉伯数字组成的4位字符串;userid为用户uid

客户端登录(旧)

Request

  • Method: POST
  • URL: http://account.app.acfun.cn/api/account/signin/normal
  • Headers:
    • Content-Type: application/x-www-form-urlencoded
  • Body:
JSON
    "username": "YOUR_USERNAME",
    "password": "YOUR_PASSWORD",
    "cid": "ELSH6ruK0qva88DD"

Response

  • Body
    • success
JSON
  {
    "name": "VDATA",
    "url": "",
    "errorid": 0,
   "errordesc": "",
    "vdata": 
      {
        "token": "[ACCESS_TOKEN]",
        "expiration": 1556779288,
        "check_password": 0,
        "check_real": 0,
        "oauth": 0,
        "acPasstoken": "[ACPASSTOKEN]",
        "acSecurity": "[ACSECURITY]",
        "acPostHint": "[ACPOSTHINT]",
        "passCheck": true,
        "s2s-code": "[S2S-CODE]",
        "info": 
        {
           "avatar": "http: \/\/cdn.aixifan.com\/dotnet\/artemis\/u\/cms\/www\/201806\/XXXX.jpg",
           "username": "[YOUR_USERNAME]",
           "userid": 1,
           "mobile": "",
           "group-level": 1,
           "mobile-check": 0
        }
      },
    "version": "1.0"
  }
  • failure
JSON
{
  "name": "VDATA",
  "url": "",
  "errorid": 18165,
  "errordesc": "帐号不存在或密码错误",
   "vdata": [],
   "version": "1.0"
}

注:cid的值固定不变,userid1只为表明其类型为整型,expiration是token失效时刻

客户端登录(新)

Request

  • Method: POST
  • URL: https://id.app.acfun.cn/rest/app/login/signin
  • Headers:
    • deviceType: 1
  • Body:
JSON
    "username": "YOUR_USERNAME",
    "password": "YOUR_PASSWORD"

Response

  • Body
    • success
JSON
  {
    "mobile-check": 0,
    "group-level": 1,
    "acPassToken": "[ACPASSTOKEN]",
    "mobile": null,
    "avatar": "https://imgs.aixifan.com/xxx",
    "auth_key": "[USERID]",
    "userid": "[USERID]",
    "first_login": false,
    "token": "[ACCESS_TOKEN]",
    "check_real": 0,
    "result": 0,
    "acSecurity": "ACSECURITY",
    "check_password": 0,
    "passCheck": true,
    "username": "[YOUR_USERNAME]"
  }
  • failure
JSON
{
  "result": 100001005,
  "error_msg": "帐号不存在或密码错误"
}

检查签到

网页端检查签到

Request

  • Method: GET
  • URL: http://www.acfun.cn/webapi/record/actions/signin?channel=0
  • Headers:
    • Cookie: YOUR_COOKIE

Response

  • Body
JSON
{
  "code": 200,
  "data":true,
  "message": "OK"
}

客户端检查签到(旧)

Request

  • Method: POST
  • URL: http://api.new-app.acfun.cn/rest/app/user/hasSignedIn
  • Headers:
    • Content-Type: application/x-www-form-urlencoded
    • acPlatform: ANDROID_PHONE
    • appVersion: 6.1.1.740
    • Cookie:
PLAINTEXT
- auth_key: [YOUR_UID];
PLAINTEXT
- acPasstoken: [YOUR_ACPASSTOKEN];
  • Body:
JSON
    "access_token": "YOUR_ACCESS_TOKEN"

Response

  • Body
JSON
{
  "result": 0,
  "hasSignedIn": true,
  "host-name": "hb2-acfun-kcs075.aliyun",
  "continuousDays": 0
}

客户端检查签到(新)

Request

  • Method: POST
  • URL: https://api-new.acfunchina.com/rest/app/user/hasSignedIn
  • Headers:
    • Cookie:
PLAINTEXT
- auth_key: [YOUR_UID];
PLAINTEXT
- acPasstoken: [YOUR_ACPASSTOKEN];
  • Body:
JSON
    "access_token": "YOUR_ACCESS_TOKEN"

Response

  • Body
JSON
{
  "result": 0,
  "hasSignedIn": true,
  "cumulativeDays": 284,
  "host-name": "hb2-acfun-kcs169.aliyun",
  "continuousDays": 1
}

注:cumulativeDays为合计时长,continuousDays为连签时长

签到

网页端(旧)

Request

  • Method: POST
  • URL: http://www.acfun.cn/webapi/record/actions/signin?channel=0
  • Headers:
    • Cookie: YOUR_COOKIE

Response

  • Body
    • success
JSON
{
  "code": 200,
  "data":
    {
      "count": 3,
      "msg": "签到已成功,领取3蕉"
    },
  "message": "OK"
}
  • failure
JSON
{
  "code":410004,
  "message":"已签过到"
}
  • GET
JSON
{
  "code": 200,
  "data":true,
  "message": "OK"
}

网页端(新)

Request

  • Method: POST
  • URL: https://www.acfun.cn/nd/pst?locationPath=signin&certified=[STRING]&channel=0&data=
  • Headers:
    • Cookie:
PLAINTEXT
- [YOUR_COOKIE];
PLAINTEXT
- stochastic: [STRING]

Response

  • Body
    • success
JSON
{
  "code": 200,
  "data":
    {
      "count": 3,
      "msg": "签到已成功,领取3蕉"
    },
  "message": "OK"
}
  • failure
JSON
{
  "code": 410004,
  "message": "已签过到"
}
JSON
{
  "code": -1,
  "msg": "用户校验失败"
}

注:为stochastic所赋的值STRING可为空,只需保证cookie中stochastic与URL中certified值相等即可

客户端(旧)

Request

  • Method: POST
  • URL: http://api.new-app.acfun.cn/rest/app/user/signIn
  • Headers:
    • Content-Type: application/x-www-form-urlencoded
    • acPlatform: ANDROID_PHONE
    • appVersion: 6.1.1.740
    • Cookie:
PLAINTEXT
- auth_key: [YOUR_UID];
PLAINTEXT
- acPasstoken: [YOUR_ACPASSTOKEN];
  • Body:
JSON
    "access_token": "YOUR_ACCESS_TOKEN"

Response

  • Body
    • success
JSON
{
  "result": 0,
  "msg": "签到成功,领取6蕉",
  "bananaDelta": 6,
  "host-name": "hb2-acfun-kcs026.aliyun",
  "continuousDays": 1
}
  • failure
JSON
{
  "result": 122,
  "msg": "今日已签到",
  "error_msg": "今日已签到",
  "host-name": "hb2-acfun-kcs045.aliyun"
}

客户端(新)

Request

  • Method: POST
  • URL: https://api-new.acfunchina.com/rest/app/user/signIn
  • Headers:
    • acPlatform: ANDROID_PHONE
    • Cookie:
PLAINTEXT
- auth_key: [YOUR_UID];
PLAINTEXT
- acPasstoken: [YOUR_ACPASSTOKEN];
  • Body:
JSON
    "access_token": "YOUR_ACCESS_TOKEN"

Response

  • Body
    • success
JSON
{
  "result": 0,
  "msg": "签到成功,领取6蕉",
  "bananaDelta": 6,
  "host-name": "hb2-acfun-kcs023.aliyun",
  "almanac":
    {
      "todayRecoGuideMsg": "你们城里人真会看片",
      "todayRecoResourceId": "5024920",
      "todayRecoResourceType": 1,
      "guideMsg": "分享一下还有惊喜哦~",
      "fortune": "小吉",
      "suits":
        [
          "打桌游",
          "在胡同里狂奔",
          "结识新朋友"
        ],
      "avoids":
        [
          "符咒贴在脑门",
          "消消乐",
          "九点去买海鲜"
        ]
    },
    "continuousDays": 1
  }
  • failure
JSON
{
  "result": 122,
  "msg": "今日已签到",
  "error_msg": "今日已签到",
  "host-name": "hb2-acfun-kcs045.aliyun"
}

投蕉

网页端

Request

  • Method: POST
  • URL: https://www.acfun.cn/banana/throwBanana.aspx
  • Headers:
    • Cookie: YOUR_COOKIE
  • Body:
JSON
    "contentId": "[ACID]"
    "count": "[THROW_BANANA_COUNT]"
    "userId": "[USERID]"

Response

  • Body
    • success
JSON
{
  "success": true,
  "result": "操作成功",
  "info": "操作成功",
  "status": 200
}
  • failure
JSON
{
  "success": false,
  "result": "该稿件已扔过香蕉",
  "info": "该稿件已扔过香蕉",
  "status": 400
}
JSON
{
  "success": false,
  "result": "赠予香蕉数量错误",
  "info": "赠予香蕉数量错误",
  "status": 400
}

注:contentId为被投稿的ac编号;count为投蕉数量,取值应在区间1,5userId为用户UID

检查在线状态

网页端

Request

  • Method: GET
  • URL: http://www.acfun.cn/online.aspx
  • Headers:
    • Cookie: YOUR_COOKIE

Response

  • Body
    • success
JSON
{
  "success": true,
  "isdisabled": false,
  "level": "[YOUR_LEVEL]",
  "status": 200,
  "duration": "[YOUR_DURATION]"
}
  • failure
JSON
{
  "success": false,
  "isdisabled": false,
  "level": 0,
  "status": 401,
  "duration": 0,
  "result": "请先登陆",
  "info": "请先登陆"
}

获取登录验证码

网页端/客户端

Request

  • Method: GET
  • URL:
    • https://id.app.acfun.cn/rest/web/login/captcha
    • https://id.app.acfun.cn/rest/app/login/captcha

Response

  • Body
    • success
JSON
{
  "result":0,
  "image":"data:image/png;base64,...",
  "key":"[KEY]"
}

注:key值与网页登录关联,客户端与网页返回的结果结构一致

  • failure (待补全)

评论区