学小易接口抓取与分析
由于本人最近上网课有好多题目不会做,然后就有好友向我推荐“学小易”这款搜题软件。用着用着发现这款软件很好,基本所有的题目都能搜索到,慕课上的或者其他题目它都能搜索到。
美中不足就是发现学小易没有电脑端,每次搜题都要把题目发送到手机搜索,觉得很麻烦,所以就有了这篇文章。
第1步,打开MUMU模拟器,启动黄鸟。
第2步,打开学小易进行搜题,比如我随便搜索一下。
第3步,打开黄鸟,查看抓包内容,可以发现这里我们发送的是post请求
然后post请求参数如下:
发现学小易这边的返回的都是明文,并没有加密
我们转码看一下,直接就可以得到明文了并不需要解密。
通过我反复测试分析,发现有些请求并不需要都传过去,并且可以直接通过get请求获取结果。
可见,只需请求 http://app.51xuexiaoyi.com/api/v1/searchQuestion?keyword=你需要搜索的题目
然后在header传入你的token,app-version就可以正确的请求接口。接下来我们就可以自制一个自己专用的搜题软件了。
java 请求核心代码如下:
作者自用的PC版搜题软件如下:嘿嘿!!
我刚把篇帖子里的python代码给优化啦一下
我是加啦一个自己登录的地方 这样每个人不用去自己抓token 用自己的账号搜 也不出意外
import requests
import json
import re
while True:
user = input("请输入你的学小易账号:");
password = input("请输入你的学小易密码:");
print('正在登陆中...请稍等!')
url0='https://app.51xuexiaoyi.com/api/v1/login'
data0 = {
"username":user,
"password":password
}
headers0 = {
'platform':'android',
'app-version':'1.0.6',
'content-type':"application/json; charset=utf-8",
'accept-encoding':'gzip',
'user-agent':'okhttp/3.11.0'
}
denglu=requests.post(url0, headers=headers0,json=data0).text.encode('utf-8').decode('unicode_escape')
print(denglu)
if '登录成功' in denglu:
tokens=re.search(r'"api_token":"(.*)","userid"',denglu).group(1)
#print(tokens)
break
while True:
a = input("请输入需要查的题目:");
url = 'https://app.51xuexiaoyi.com/api/v1/searchQuestion'
data = {
'keyword': a
}
headers = {
'token': tokens,
'device': '',
'platform': 'android',
'User-Agent': 'okhttp/3.11.0',
'app-version': '1.0.6',
'Content-Type': "application/x-www-form-urlencoded; charset=UTF-8",
'Accept-Encoding': "gzip, deflate, br"
}
r = requests.post(url, headers=headers, data=data)
# print(r1.json())
html1_str = json.dumps(r.json(),sort_keys = True, indent = 4, separators = (',', ':'))
str =html1_str.encode('utf-8').decode('unicode_escape')
forword = re.sub(r'"ey(.*)",',' ', str)
print(forword) 隔壁家的王二狗 发表于 2020-6-22 15:05
老哥完整代码发一下我去试试
import requests
import json
while True:
a=input("请输入需要查的题目:");
url='https://app.51xuexiaoyi.com/api/v1/searchQuestion'
data={
'keyword': a
}
headers = {
'token':'你自己的',
'device':'这里应该也是你自己的,忘了',
'platform':'android',
'User-Agent':'okhttp/3.11.0',
'app-version':'1.0.6',
'Content-Type': "application/x-www-form-urlencoded; charset=UTF-8",
'Accept-Encoding': "gzip, deflate, br"
}
r = requests.post(url,headers=headers,data=data)
#print(r1.json())
html1_str=json.dumps(r.json(), sort_keys=True, indent=4, separators=(',', ':'))
print(html1_str.encode('utf-8').decode('unicode_escape'))
我之前用Python搞过一次,第二天就账号异常了:'(weeqw http://yanxuan.nosdn.127.net/db0bdf2c1dfb696a485516c5c99b6995.png wyc1122wyc 发表于 2020-6-22 14:59
可否提供源代码。。
改天写个简单的java版demo吧,但是实际还是用的自己的token,只是不需要打开手机再搜题 哈哈呵呵哒哒 发表于 2020-6-30 20:04
大佬手机小黄鸟是不是要vpn过检啊,为什么我抓学小易的时候都直接网络异常,软件能不能分享一下
用模拟器搞 这样还是要登账号啊 忆白学渣 发表于 2020-6-22 14:17
我之前用Python搞过一次,第二天就账号异常了
我都挂我服务器好久了,今天还能用啊,你是不是请求太频繁了 忆白学渣 发表于 2020-6-22 14:17
我之前用Python搞过一次,第二天就账号异常了
你是不是准备爬它题库{:1_926:} 我就是平常搜题自己用用 zxm870973 发表于 2020-6-22 14:27
你是不是准备爬它题库 我就是平常搜题自己用用
唔,可能是{:301_998:} 他这个题库实属庞大 可否提供源代码。。 这样的题库包含了什么科目,是所有科目都支持吗 KSPprince 发表于 2020-6-22 15:01
这样的题库包含了什么科目,是所有科目都支持吗
你可下载手机版的学小易搜索试试,题库确实很不错,但是一般人做题很少用手机搜索,相对较麻烦