laoxiaodiao 发表于 2019-7-10 20:41

【原创】一分钟实现蓝墨云秒杀所有资源

本帖最后由 laoxiaodiao 于 2019-7-11 09:21 编辑

      我们大学英语老师上一年蓝墨云来上英语课,来签签到啥的,签到啥的还可以,我们这种好学生是不会旷课的{:1_918:},但是他一学期就让我们看几百个沙雕视频,还记积分,谁积分高期末成绩高,我的妈呀,这可愁死小宝宝了,在网上搜蓝墨云破解版,下载下来屁用没有,然后在52上搜搜有没有大神已经破解,虽然没有,但是发现了这个帖子,但那个时候还没有学JavaScript,只学了C,但大家都知道C写这些东西很麻烦,而且我C也达不到那个水平,所以我只能乖乖的去刷了几百个视频:'(weeqw(流下了没有技术的泪水),我可是很记仇的,刚学了Python一个星期,打算拿蓝墨云来开刀,废话不多说。
   首先之前那个帖子用的是burpsuite来抓包,我这里用的谷歌自带的工具,我重新抓了试试,发给服务器的数据真的没有加密。我试了好久,发现在每次看完视频之后都会给服务器发送一个数据包,数据内容如下
服务器返回的数据为

咦,想一想,那么我不看视频,在登陆之后就直接给服务器发这个数据包,那不就完事了?哈哈哈,说干就干,我试着改了一下资源id(res-id),重新发送出去,卧槽,还真的给老子返回了success,我们来一起分析这个数据,他要发送classid,res-id(翻译过来就是资源id嘛),watchto(翻译过来就是要看到),duration(翻译过来就是进度条嘛),
current_watch_to:(当前看到哪了),再捋一捋,如果要获得classID,那么我们肯定哟要先登录啊,要获得resid,那么我们也得要提前提取出来资源id嘛,
那么我们的破解思路就很清晰啦,
(1)登陆,获取课程id
(2)进入相应课程的资源列表,提取资源id
(3)发送数据包
第一步:登陆
没有验证码,卧槽,太溜了,如果有验证码还得要破验证码,这个搞的太不安全了。

输入账号密码点击登录,抓包
其返回的数据如下



实现登陆代码如下:
import requests
import re
def login():
    url1="https://www.mosoteach.cn/web/index.php?c=passport&m=account_login"#登陆的链接
    head1={#这个是数据头
      "Host":"www.mosoteach.cn",
      "Content-Length":"60",
      "Connection": "keep-alive",
      "Accept": "application/json, text/javascript, */*; q=0.01",
      "Origin": "https://www.mosoteach.cn",
      "X-Requested-With": "XMLHttpRequest",
      "User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",
      "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
      "Referer": "https://www.mosoteach.cn/web/index.php?c=passport",
      "Accept-Encoding": "gzip, deflate",
      "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8"
}
    username=input("请输入账号:")
    password=input("请输入密码:")
    body="account_name={0}&user_pwd={1}&remember_me=N".format(username,password)#数据包
    result1=requests.post(url1,headers=head1,data=body)#发送请求,并将结果赋给result1
    cookie=result1.headers["Set-Cookie"]#提取cookie,在下一次发送请求的时候带上这个cookie,服务器才会认识你
#除了上面这个,还要提取aliyungf_tc,teachweb,SERVERID,不要问我为什么提取,他返回给你的数据肯定是有用的,提取保存就行,提取用到了正则表达式
    print("获取如下参数")
    aliyungf_tc=re.findall(r"aliyungf_tc=(.*?);",cookie)
    aliyungf_tc=aliyungf_tc
    print("aliyungf_tc=%s"%aliyungf_tc)
    teachweb=re.findall(r"teachweb=(.*?);",cookie)
    teachweb=teachweb
    print("teachweb=%s"%teachweb)
    Ser=re.findall(r"SERVERID=(.*?);",cookie)
    Ser=Ser
    print("serverid=%s"%Ser)
接下来获取课程id,并且选择你要刷的课
你在登陆之后会进入下面这个界面

右边就是课程id了实现代码如下

url2="https://www.mosoteach.cn/web/index.php?c=clazzcourse&m=index"
    head2={
      "Connection": "keep-alive",
      "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
      "Origin": "https://www.mosoteach.cn",
      "X-Requested-With": "XMLHttpRequest",
      "User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",
      "Referer": "https://www.mosoteach.cn/web/index.php?c=passport",
      "Accept-Encoding": "gzip, deflate",
      "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
      "Cookie": "aliyungf_tc={};teachweb={};SERVERID={}".format(aliyungf_tc,teachweb,Ser)
      }
    result2=requests.post(url=url2,headers=head2)
    classid=re.findall("data-id=\"(.*)\"",result2.text)
    print("成功获取科目ID:%s"%classid)
    classid=input("请输入你要刷的科目ID:")
第二步:获取资源id
点击相应的课程(发送数据包),获取资源id(在服务器返回的数据中提取id)

实现代码如下

head3={
      "Connection": "keep-alive",
      "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
      "Origin": "https://www.mosoteach.cn",
      "X-Requested-With": "XMLHttpRequest",
      "User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",
      "Accept-Encoding": "gzip, deflate",
      "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
      "Cookie":"aliyungf_tc={0};teachweb={1};SERVERID={2}".format(aliyungf_tc,teachweb,Ser),
      "Refere": "https://www.mosoteach.cn/web/index.php?c=interaction&m=index&clazz_course_id={}".format(classid)
            }

    url3="https://www.mosoteach.cn/web/index.php?c=res&m=index&clazz_course_id={}".format(classid.replace("'",""))
    result3=requests.get(url3,headers=head3)
    viedoid=re.findall("data-value=\"(.*)\"",result3.text)#这是用正则表达式提取资源id
第三步:发送已经看完的消息

url4="https://www.mosoteach.cn/web/index.php?c=res&m=save_watch_to"
    i =list( range(1,len(viedoid),1))
    #print(i)
    for k in i:
      if len(viedoid)==len(viedoid):#检测所提取的视频id长度是不是等于第一个视频的id长度,因为在提取的过程中后面有几个不是视频id,得把它去掉
            head4={
                "Connection": "close",
                "Content-Length":"141",
                "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
                "Referer":"https://www.mosoteach.cn/web/index.php?c=res&m=index&clazz_course_id={}".format(classid),
                "Accept":"application/json, text/javascript, */*; q=0.01",
                "Origin": "https://www.mosoteach.cn",
                "X-Requested-With": "XMLHttpRequest",
                "User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",
                "Accept-Encoding": "gzip, deflate",
                "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
                "Cookie":"aliyungf_tc={0};teachweb={1};SERVERID={2}".format(aliyungf_tc,teachweb,Ser)
                }
            data4="clazz_course_id={}&res_id={}&watch_to=1200&duration=1200¤t_watch_to=0".format(classid,viedoid)#这里的watch_to和duration要设置的大一些,如果设置小了,有些视频长度大于这个数值,你就会看不完
            result4=requests.post(url4,headers=head4,data=data4).json()
            print("视频%s的结果为:%s"%(viedoid,result4))
      else:
            pass
login()
至此大功告成,接下来给大家看看效果

我想着先将这个告知蓝墨云的人员的,但一直找不到联系方式,我在那个帖子回复说我用Python搞出来了,有人想让我分享,但那个时候正在考试,没有大把时间来写帖子,我发出来仅供大家学习,不要用于非法用途,我可不负责任哈,在这段时间我也会联系蓝墨云那边,看看让他们修复。我靠,写了一下午,都没吃晚饭,我先吃东西去了,之后再发exe文件

laoxiaodiao 发表于 2019-7-11 00:34

baozitou6 发表于 2019-7-11 00:27
学习资料方便透露下不。想学习下

就在图书馆看了一本关于Python比较基础的书,我也是边翻书边敲的代码,现在在啃疯狂Python讲义,这个论坛里有电子版。但我把书买了,感觉还不错

laoxiaodiao 发表于 2019-7-10 23:42

choo1i3 发表于 2019-7-10 21:29
学一个星期就这么厉害???无敌了楼主,流下了羡慕的泪水

哈哈,学C之后再学Python会觉得不用考虑很多东西,你也可以的,我们一起加油:handshake,我也不是计算机专业,编程是我的爱好:Dweeqw

安兆童 发表于 2019-7-10 20:56

谢谢分享一下

_小白 发表于 2019-7-10 20:58

哇,学一个星期这么厉害啦,写的很不错

huluwa123 发表于 2019-7-10 20:58

热乎呢   围观

一笑懸命桑 发表于 2019-7-10 21:04

可以,学习学习了!!

蔚蓝色 发表于 2019-7-10 21:17

学一个星期就这么厉害了,厉害厉害

choo1i3 发表于 2019-7-10 21:29

学一个星期就这么厉害???无敌了楼主,流下了羡慕的泪水

xiaoyun12138 发表于 2019-7-10 21:31

6666666666

某天大魔王 发表于 2019-7-10 21:52

这么厉害的。。。。厉害了

不忘记你的眼睛 发表于 2019-7-10 21:58

无敌了,留下了没有技术的泪水
页: [1] 2 3 4 5 6 7
查看完整版本: 【原创】一分钟实现蓝墨云秒杀所有资源