折腾:
期间,已经得到了J字段的解密逻辑,且用python脚本实现了。
接下来要继续去用Charles+Nox夜神模拟器,继续分析剩余其他所有的和绘本相关的api请求。
并且配合Postman和Python解密脚本去获取和解析返回数据。


- 自主阅读
- api
- 一共最多90个
- “J”: “{\”userId\”:\”1134723\”,\”fieldName\”:\”\”,\”fieldValue\”:\”全部类别\”,\”grades\”:\”\”,\”levels\”:\”\”,\”supportingResources\”:\”有音频\”,\”offset\”:90,\”limit\”:10}”,
- 亲子阅读
- api
- 一共最多50个
- “J”: “{\”userId\”:\”1134723\”,\”fieldName\”:\”\”,\”fieldValue\”:\”全部类别\”,\”theStageOfTheChild\”:\”\”,\”parentalEnglishLevel\”:\”\”,\”supportingResources\”:\”有音频\”,\”offset\”:50,\”limit\”:10}”,
- {“J”:”{\”userId\”:\”1134723\”,\”fieldName\”:\”\”,\”fieldValue\”:\”全部类别\”,\”theStageOfTheChild\”:\”\”,\”parentalEnglishLevel\”:\”\”,\”supportingResources\”:\”有音频\”,\”offset\”:0,\”limit\”:10}”,”C”:0}
对此,专门去Postman中测试,确保是可以返回数据的:

对于返回数据,解密后是这样的:

所以明显是:
pk=primary key=主键
然后分别对于每个book

再去调研接口
http://www.xiaohuasheng.cn:83/Reading.svc/viewEnglishSeries2/1134723/31 GET /Reading.svc/viewEnglishSeries2/1134723/31 HTTP/1.1 Content-Type application/json Authorization NSTp9~)NwSfrXp@\ userId 1134723 timestamp xxx signature ab1bb13046493e8636e7db6fd61cc561 Content-Length 2 Host www.xiaohuasheng.cn:83 User-Agent Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; A0001 Build/KOT49H) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Cookie ASP.NET_SessionId=qzj2da2eecobbcfjpndomktv Cookie2 $Version=1 Accept-Encoding gzip Connection keep-alive {} { "C": 2, "J": "H4sIAAAAAAAEAO1.......", "M": "1001", "ST": null }
再去解析返回的信息

[ { "pk": 31, "englishTitle": "Step Into Reading", "chineseTitle": "兰登分级阅读", "summaryInOneSentence": "美国主流分级读物", "poster": "", "picture": "", "lessonPlanId": 184136, "lessonPlanTitle": "英语启蒙阅读怎么做?Step Into Reading,从起步走向自主阅读", "lessonPlanSummary": "美国兰登书屋 Random House 的美系分级阅读代表读物:Step Into Reading (以下简称“SIR”)。下面分别介绍SIR1-4阶。 SIR1、2、3阶非常适合用来给孩子做英语阅读", "lessonPlanFirstPictureUrl": " https://img.xiaohuasheng.cn/20180906144504394_f6109837926dc994ac9b2954dc569843.jpg ", "publishingHouse": "Penguin Random House(美国)", "publishingCountry": "美国", "award": "", "supportingResources": "有音频 · 可点读", "levelCount": 4, "bookCount": 117, "bookId": 35764, "audioCount": 330, "bookCommentCount": 1474, "experienceCount": 16, "minPrice": 150, "maxPrice": 492, "youzanItemId": 422614892, "youzanItemDetailUrl": " https://h5.youzan.com/v2/showcase/goods?alias=1ylb20vitdct2&from=wsc&kdtfrom=wsc ", "whitePaperCount": 2, "levelArrayJson": ".... .......... } ]

还有对应网页版,其中有公开的很多数目的信息
点击 包含图书

看起来涉及到2个请求:
http://www.xiaohuasheng.cn:83/Reading.svc/queryEnglishSeriesBook/1134723/31/-1/0/ http://www.xiaohuasheng.cn:83/Reading.svc/getLevelForQueryEnglishSeriesBook/1134723/31

然后去研究返回结果
对于:
http://www.xiaohuasheng.cn:83/Reading.svc/queryEnglishSeriesBook/1134723/31/-1/0/10
返回:

对应着界面:

继续进去每本看看信息
UI

接口:
http://www.xiaohuasheng.cn:83/Reading.svc/getServerBookInfo17/1134723/120.136174/28.997280/109512/10
后来一次:
http://www.xiaohuasheng.cn:83/Reading.svc/getServerBookInfo17/1134723/120.136174/28.997280/109512/10
后记:
此处的:
- 120.136174
- 28.997280
先后两次调试,都是一样的,没变
-》去Charles中搜
28.997280
找到:


-》推测是:
- 经度:120.136174
- 维度:28.997280
api中,填上固定的经纬度,估计就可以了。
而:
- 109512
- 是前面单个seriesBook的pk,即id
- 10
- 没找到出处
- 且去看了其他book,也是10
- 暂时就用固定值10吧
- 后记:看到源码中,还的确就是经纬度和固定的10

解析后:
[ { "pk": 109512, "guid": "7544feaa26aae582", "isbn13": "9780375912306", "name": "Step into Reading 1: Happy Alphabet!", "author": "Anna Jane Hays, Joe Mathieu (Illustrator)", "translator": "", "press": "LucasBooks for Young Readers", "awards": "", "publishDate": "2000-3", "frontCover": "149/Book/20160930171033.png", "frontCoverWidth": 355, "frontCoverHeight": 552, "introduction": "A string of wacky people, animals, and objects, each beginning with a different letter of the alphabet, gather to celebrate a birthday! Each page presents a letter of the alphabet, and every phrase rhymes with the next to help beginning readers anticipate words!\r\n\r\n\r\nFrom the Trade Paperback edition.", "dangdangLink": "", "amazonLink": "http://www.amazon.com/Star-Wars-Episode-Anakins-Reading/dp/0375804315/ref=sr_1_1?s=books&ie=UTF8&qid=1441894607&sr=1-1&keywords=0090129003990", "jdLink": "", "jdSkuId": "", "downloadLink": "", "amazonPrice": 0.01, "commentCount": 21, "booklistCount": 65, "creator": 149, "seriesTitle": "Step into Reading", "chineseOrForeignLanguageBookName": "", "edition": "", "sizeOfTheBook": "", "pages": "", "wordCount": "", "tableOfContents": "", "ar": "1.1", "ownedCategories": "", "isEnglish": 1, "star": 4.722, "scoreCount": 625, "bookCommentChildCount": 584, "favoriteCount": 74, "goodCommentCount": 19, "badCommentCount": 1, "inPageCommentCount": 3, "readingChildCount": 588, "readingUserCount": 593, "atosBookLevel": "1.1", "interestLevel": "Lower Grades (LG K-3)", "arPoints": "0.5", "arWordCount": "168", "fictionNonfiction": "Nonfiction", "topicSubtopic": "Alphabet/Counting Books-Alphabet Books; Poetry/Rhymes-Stories in Rhyme;", "booklistsJson": "[{\"type\":1,\"pk\":276,\"name\":\"英语学习路:学自然拼读(Phonics)的书\",\"bookCount\":50,\"favoriteCount\":252,\"recommendUserCount\":375,\"frontCover\":\"\"},{\"type\":1,\"pk\":245,\"name\":\"英语学习路:刚开始,寻找字母书(Alphabet Books)!\",\"bookCount\":69,\"favoriteCount\":169,\"recommendUserCount\":241,\"frontCover\":\"\"},{\"type\":2,\"pk\":19655,\"name\":\"兰登分级1 ready to read共计30本\",\"bookCount\":30,\"favoriteCount\":38,\"frontCover\":\"\"},{\"type\":2,\"pk\":2148,\"name\":\"优优0-36个月的绘本阅读清单!\",\"bookCount\":484,\"favoriteCount\":12,\"frontCover\":\"\"},{\"type\":2,\"pk\":47982,\"name\":\"兰登分级一级30本\",\"bookCount\":30,\"favoriteCount\":6,\"frontCover\":\"\"},{\"type\":2,\"pk\":14262,\"name\":\"绵绵2018英文书单\",\"bookCount\":163,\"favoriteCount\":2,\"frontCover\":\"\"}]", "rbrsJson": "[]", "latestCommentJson": ......

然后返回页面后,继续下来相关的绘本:

对应接口是:
http://www.xiaohuasheng.cn:83/Reading.svc/queryEnglishSeriesBook/1134723/31/-1/20/10

很明显,url中最后参数表示offset和limit
再点击 包含音频:

接口,2个:
http://www.xiaohuasheng.cn:83/Reading.svc/getLevelForQueryEnglishSeriesAudio/1134723/31 http://www.xiaohuasheng.cn:83/Reading.svc/queryEnglishSeriesAudio/1134723/31/-1/1/0/10
先说:
http://www.xiaohuasheng.cn:83/Reading.svc/getLevelForQueryEnglishSeriesAudio/1134723/31

解析后:
[ { "pk": -1, "name": "全部" }, { "pk": 79, "name": "Level 1" }, { "pk": 80, "name": "Level 2" }, { "pk": 81, "name": "Level 3" } ]
-》
- 之前的-1,估计都是表示全部的pk=primary key
- 等于全部搜索
- 此处的level 1+2+3共240
- 也不等于后面界面上的330啊
再说:
http://www.xiaohuasheng.cn:83/Reading.svc/queryEnglishSeriesAudio/1134723/31/-1/1/0/10

解析后:
[ { "pk": 1808, "title": "Bear Hugs ", "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "audioCount": 5 }, { "pk": 1809, "title": "Big Egg", "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "audioCount": 5 }, { "pk": 1810, "title": "Boats", "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "audioCount": 5 }, { "pk": 1811, "title": "Cats Traps", "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "audioCount": 5 }, { "pk": 1812, "title": "City Cats, Country Cats ", "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "audioCount": 5 }, { "pk": 1813, "title": "Corn Aplenty ", "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "audioCount": 5 }, { "pk": 1814, "title": "Dancing Dinos Go to School", "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "audioCount": 5 }, { "pk": 1815, "title": "Dancing Dinos", "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "audioCount": 5 }, { "pk": 1816, "title": "Dragon Egg ", "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "audioCount": 5 }, { "pk": 1817, "title": "Ducks Go Vroom", "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "audioCount": 5 } ]
界面进入:

再进去某个子页面:

接口:
http://www.xiaohuasheng.cn:83/Reading.svc/viewAudioPackage/1134723/1808/1
返回:

解析后:
[ { "pk": 1808, "title": "Bear Hugs ", "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "audioCount": 5, "bookSeriesId": 79, "bookSeriesChineseTitle": "兰登分级阅读第1级", "bookSeriesEnglishTitle": "Step Into Reading Level 1", "bookSeriesPicture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "audioArrayJson": "[{\"pk\":6497,\"picture\":\"EnglishLevelFrontCoverOrInnerPage/79/封面.jpg\",\"path\":\"Audio/1808/20180911222508831.mp3\",\"extension\":\".mp3\",\"title\":\"1. Bear Hugs-Listen and Repeat\",\"size\":1735488,\"duration\":433,\"sizeString\":\"1.7M\",\"durationString\":\"07:13\",\"packageName\":\"Bear Hugs \"},{\"pk\":6498,\"picture\":\"EnglishLevelFrontCoverOrInnerPage/79/封面.jpg\",\"path\":\"Audio/1808/20180911222513404.mp3\",\"extension\":\".mp3\",\"title\":\"2. Bear Hugs-Listening Test\",\"size\":687312,\"duration\":171,\"sizeString\":\"671KB\",\"durationString\":\"02:51\",\"packageName\":\"Bear Hugs \"},{\"pk\":6499,\"picture\":\"EnglishLevelFrontCoverOrInnerPage/79/封面.jpg\",\"path\":\"Audio/1808/20180911222516379.mp3\",\"extension\":\".mp3\",\"title\":\"3. Bear Hugs-the Chant\",\"size\":150912,\"duration\":37,\"sizeString\":\"147KB\",\"durationString\":\"00:37\",\"packageName\":\"Bear Hugs \"},{\"pk\":6500,\"picture\":\"EnglishLevelFrontCoverOrInnerPage/79/封面.jpg\",\"path\":\"Audio/1808/20180911222517198.mp3\",\"extension\":\".mp3\",\"title\":\"4. Bear Hugs-the Song\",\"size\":210816,\"duration\":52,\"sizeString\":\"205KB\",\"durationString\":\"00:52\",\"packageName\":\"Bear Hugs \"},{\"pk\":6501,\"picture\":\"EnglishLevelFrontCoverOrInnerPage/79/封面.jpg\",\"path\":\"Audio/1808/20180911222518130.mp3\",\"extension\":\".mp3\",\"title\":\"5. Bear Hugs-the Story\",\"size\":1398528,\"duration\":349,\"sizeString\":\"1.3M\",\"durationString\":\"05:49\",\"packageName\":\"Bear Hugs \"}]" } ]
其中有我们要的audio的url
\"path\":\"Audio/1808/20180911222508831.mp3\"
其中第一个是:
"pk\":6497
不过也去点击音频播放,看看是否请求对应url
进入播放音频界面:

接口:
可见:

先去:
http://www.xiaohuasheng.cn:83/Reading.svc/getAllAudioInPackageByAudioId/1134723/6497
再去:
https://img.xiaohuasheng.cn/Audio/1808/20180911222508831.mp3
对于:
http://www.xiaohuasheng.cn:83/Reading.svc/getAllAudioInPackageByAudioId/1134723/6497
返回:

解析后:
[ { "pk": 6497, "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "path": "Audio/1808/20180911222508831.mp3", "extension": ".mp3", "title": "1. Bear Hugs-Listen and Repeat", "size": 1735488, "duration": 433, "sizeString": "1.7M", "durationString": "07:13", "packageName": "Bear Hugs " }, { "pk": 6498, "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "path": "Audio/1808/20180911222513404.mp3", "extension": ".mp3", "title": "2. Bear Hugs-Listening Test", "size": 687312, "duration": 171, "sizeString": "671KB", "durationString": "02:51", "packageName": "Bear Hugs " }, { "pk": 6499, "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "path": "Audio/1808/20180911222516379.mp3", "extension": ".mp3", "title": "3. Bear Hugs-the Chant", "size": 150912, "duration": 37, "sizeString": "147KB", "durationString": "00:37", "packageName": "Bear Hugs " }, { "pk": 6500, "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "path": "Audio/1808/20180911222517198.mp3", "extension": ".mp3", "title": "4. Bear Hugs-the Song", "size": 210816, "duration": 52, "sizeString": "205KB", "durationString": "00:52", "packageName": "Bear Hugs " }, { "pk": 6501, "picture": "EnglishLevelFrontCoverOrInnerPage/79/封面.jpg", "path": "Audio/1808/20180911222518130.mp3", "extension": ".mp3", "title": "5. Bear Hugs-the Story", "size": 1398528, "duration": 349, "sizeString": "1.3M", "durationString": "05:49", "packageName": "Bear Hugs " } ]
即:
把相关音频文件地址都获取到了。
剩下的,就是看如何借助于postman去分析接口,如何写代码模拟爬取数据了。
转载请注明:在路上 » 【已解决】用Charles+Postman+Python解密脚本分析小花生app中绘本接口和返回信息