首页 编程教程正文

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

piaodoo 编程教程 2020-02-22 22:15:19 1718 0 python教程

本文来源吾爱破解论坛

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

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

看完视频之后都会给服务器发送一个数据包.png (132.93 KB, 下载次数: 0)

下载附件  保存到相册

2019-7-11 08:18 上传


服务器返回的数据为

返回的数据.png (34 KB, 下载次数: 1)

下载附件  保存到相册

2019-7-11 08:18 上传


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

登录界面.png (545.48 KB, 下载次数: 0)

下载附件  保存到相册

2019-7-11 08:18 上传


输入账号密码点击登录,抓包

其返回的数据如下


登录数据包.png (11.11 KB, 下载次数: 1)

下载附件  保存到相册

2019-7-11 08:18 上传



实现登陆代码如下:
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[0]
    print("aliyungf_tc=%s"%aliyungf_tc)
    teachweb=re.findall(r"teachweb=(.*?);",cookie)
    teachweb=teachweb[0]
    print("teachweb=%s"%teachweb)
    Ser=re.findall(r"SERVERID=(.*?);",cookie)
    Ser=Ser[0]
    print("serverid=%s"%Ser)
接下来获取课程id,并且选择你要刷的课
你在登陆之后会进入下面这个界面

课程id.png (193.35 KB, 下载次数: 0)

下载附件  保存到相册

2019-7-11 09:20 上传


右边就是课程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)

资源id.png (355.26 KB, 下载次数: 1)

下载附件  保存到相册

2019-7-11 08:18 上传


实现代码如下

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[k])==len(viedoid[1]):#检测所提取的视频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[k])#这里的watch_to和duration要设置的大一些,如果设置小了,有些视频长度大于这个数值,你就会看不完
            result4=requests.post(url4,headers=head4,data=data4).json()
            print("视频%s的结果为:%s"%(viedoid[k],result4))
        else:
            pass
login()

至此大功告成,接下来给大家看看效果

soogif1.gif (968.52 KB, 下载次数: 14)

下载附件  保存到相册

2019-7-11 08:50 上传


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

登录返回的包.png (203.11 KB, 下载次数: 25)

下载附件  保存到相册

2019-7-11 08:53 上传

登录返回的包.png

本帖被以下淘专辑推荐: · SunGeekHouse|主题: 211, 订阅: 49 · 爬虫专栏|主题: 38, 订阅: 39

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7991.html

搜索