起点中文网 - 网页 API
简介 #
公众章节/书籍信息不需要小饼干,部分需要正确的引用页值。
利用这些接口应该能从起点上完整的扒下一本书,前提是你有足够的起点币 (起点官网充值)。
获取书籍信息/完整章节列表 #
GET: http://3g.if.qidian.com/Client/IGetBookInfo.aspx?bookId=<书籍ID>
{
"BookId":0, // 书籍 ID
"BookName":"起点小说 API", // 书籍名称
"Author":"Jixun", // 书籍作者
"ImageStatus":1, // 图片状态 (是否有图片?)
"BookStatus":"连载中", // 书籍状态
"CategoryId":1, // 分类 ID
"CategoryName":"奇幻", // 分类名称
"SubCategoryId":62, // 子分类 ID
"SubCategoryName":"剑与魔法", // 子分类名称
"SignStatus":"驻站作品", // 签约状态
"IscanPraise":0, // 能否点赞 (?)
"LastChapterId":11111, // 最新章节 ID
"LastChapterName":"序章", // 最新章节名称
"LastChapterTime":0, // 最新章节更新时间
"LastVipChapterId":0, // 最新 Vip 章节 ID
"LastVipChapterName" // 最新 Vip 章节名称
"LastVipChapterTime":-1, // 最新 Vip 章节更新时间
"WordsCount":0, // 字数
"IsQin":0, // 是否全勤 (?)
"Chapters":[ // 章节列表
{
"c":11111, // 章节 ID
"n":"序章" // 章节名称
"v":0, // 是否为 Vip 章节
"p":0, // 价格
"t":0, // 更新时间
"w":0, // 字数
"vc":"200" // 分卷 ID
"ui":0, // 未知
"pn":2, // 未知
"ccs":0, // 未知
"cci":0 // 未知
}
],
"Volumes":[ // 分卷列表
{
"VolumeCode":"200" // 分卷 ID
"VolumeName":"正文" // 分卷名称
}
],
"EnableBookUnitLease":0, // 允许书籍租借 (?)
"EnableBookUnitBuy":0, // 允许 “以某种单位” 购买??
"Units":null, // “某种单位”列表
"WholeSale":0, // 全本购买
"TotalPrice":0, // 全本价格
"ret":0, // API 返回值 (0 成功)
"msg" // 错误信息
}
获取公众章节正文 (方法 1) #
这个 API 使用 GBK 编码, 应该是旧版全文阅读的遗留代码没改。
GET: http://files.qidian.com/Author<书籍简码>/<书籍ID>/<章节ID>.txt
书籍简码: <书籍ID> % 8 + 1
需要稍微处理一下返回的内容,例如 http://files.qidian.com/Author1/16/11111.txt
:有下述内容:
document.write(' 欸嘿嘿<p> 第二行 <a href=http://jixun.moe>梦姬 jixun.moe 欢迎广大读者 ..... </a>');
购买章节 (不获取内容) #
POST http://vipreader.qidian.com/Ajax.aspx?opName=BuySingleChapterNew
数据:
bookid: 123 // 书籍 ID
chapterid: 456 // 章节 ID
type:0 // type (g)
unbuynum:0 // const 0
preChapterId:0 // const 0
status:-1 // const -1
sr: // SimpleRead; 不再显示订阅提醒; 留空吧
ab: // 如果为 "on" 则自动尝试购买 (否则传入 "")
validcode:0 // 短信验证码? 留 0
sk:592bca02aa40634015e258708fb1ced4 // csrf token?
skdate:2016-08-12
sktime:0
返回值在测试的时候会提示参数错误,但是订阅之后能正常查看内容。
{
"code":0,
"info":"参数错误",
"buyStatus":true,
"simpleRead":{
"code":0,
"info":""
},
"autobuy":-1,
"chapterId":456,
"newUserType":-1
}
sk
的值看上去像是 csrf token
,随便开一个 vip 章节的页面获取即可;
应该能一次性使用一整天。
HTML 是这么个构造:
<input type="hidden" id ="sk" name ="sk" value="592bca02aa40634015e258708fb1ced4">
<input type="hidden" id ="skdate" name ="skdate" value="2016-08-12">
<input type="hidden" id ="sktime" name ="sktime" value="">
获取 Vip 章节内容 #
请求:
GET: http://vipreader.qidian.com/Ajax.aspx?opName=getvipcontent&bookId=123&chapterId=456&sk=592bca02aa40634015e258708fb1ced4&skdate=2016-08-12&sktime=0&isbig5=0
响应:
// Cookie: 购买了此章节的小饼干
// Referer: http://vipreader.qidian.com/BookReader/vip,3347598,68247056.aspx
// 中文字符全部为 \uXXXX 形式。
{
"code":0,
"info":"",
"isLogin":true,
"content":"章节内容",
"chapter":{
"ChapterGreat":null,
"ChapterId":456,
"BookName":"书籍名称",
"VolumeId":null,
"VolumeCode":null,
"VolumeDesc":null,
"VolumeName":null,
"BookId":0,
"ChapterName":"章节名称",
"PreChapterId":455,
"NextChapterId":457,
"SeqNo":null,
"AuthorId":0,
"ChapterWordsCount":0,
"Status":null,
"StatusText":null,
"InsertTime":null,
"LastUpdateTime":"2016-08-12 00:00:00",
"Summary":null,
"Price":0,
"AdVipPrice":0,
"AddPrice":null,
"BuyCount":null,
"ChapterbuyCount":null,
"IsVip":null,
"ClickCount":null,
"Content":null,
"ChapterSize":null,
"ChapterInitWords":0,
"ChapterLength":null,
"FontFamily":null,
"IsFreeChapter":null,
"AuditStatus":null,
"AuthorName":"梦姬",
"Appreciation":null,
"Top":null,
"PiaofuImageUrl":null,
"PiaofuAUrl":null,
"VipImageUrl":null,
"Other":null,
"FreeStatus":null,
"CBID":null,
"CCID":null,
"UUID":null
},
"vipChapterCount":0,
"allPrice":0,
"isbuy":1, // 是否已购买
"singlePrice":0,
"qRCode":"qr code url"
}
更新 #
网上应该已经有很多对起点 API 自动订阅的实现,参考那些可能会更加方便。