最近室友发现了一个MOOC下载器,可惜要VIP,让我帮忙看下。

软件地址在这里:学无止MOOC下载器

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

很奇怪作者为什么往开源社区发布收费软件,不过既然开源了,那就由不得作者啦。

可以看出源码很久没有维护了,尝试运行了下源码,果然解析不到了,调试分析了下,发现是给aria2的header未设置,导致了访问越权(403错误)。那么加上header是不是能用呢?

果然有效,这下可以和vip和限速说拜拜了。

下面附上修改后的源码:

只需要修改Mooc_Config.py文件

 1 '''
 2     Mooc 总项目的配置文件
 3 '''
 4 
 5 import sys
 6 import os
 7 import re
 8 
 9 
10 # 常量,固定参数
11 __QQgroup__ = "196020837"
12 __email__  = "py.jun@qq.com  ze.ga@qq.com"
13 if hasattr(sys, 'frozen'):
14     PATH = os.path.dirname(sys.executable)
15 else:
16     PATH = os.path.dirname(os.path.abspath(__file__))  # 程序当前路径
17 winre = re.compile(r'[?*|<>:"/\\\s]')  # windoes 文件非法字符匹配
18 WIN_LENGTH = 64
19 TIMEOUT = 60   # 请求超时时间
20 PLAYLIST = '播放列表.dpl'
21 PALYBACK = 'DPL_PYJUN'
22 BATNAME = '修复播放列表.bat'
23 BATSTRING = '''\
24 @echo off
25 copy {0} {1}
26 echo 成功修复“{1}”
27 echo 请用Potplayer播放器打开“{1}”观看视频(未安装Potplayer自行百度下载安装)
28 pause
29 '''.format(PALYBACK, PLAYLIST)
30 LENGTH = 80
31 
32 # 变量,可修改的参数
33 download_speed = "1248000000K"#解除速度限制
34 if getattr(sys, 'frozen', False): #是否打包
35     aria2_path = os.path.join(sys._MEIPASS, "aria2c.exe")
36     alipay_path = os.path.join(sys._MEIPASS, "Alipay.jpg")
37 else:
38     aria2_path = os.path.join(PATH, "aria2c.exe")
39     alipay_path = os.path.join(PATH, "Alipay.jpg")
40 #################主要修改这里########
41 aira2_cmd = '%s --header "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 -- oL4fIqviN072CS36cRExYXyJOPU981Fu" --check-certificate=false -x 16 -s 64 -j 64 -k 2M --disk-cache 128M --max-overall-download-limit %s --referer http://www.icourse163.org "{url:}" -d "{dirname:}" -o "{filename:}"'%(aria2_path, download_speed)
42 
43 # 课程链接的正则匹配
44 courses_re = {
45     "icourse163_mooc": re.compile(r'\s*https?://www.icourse163.org/((learn)|(course))/(.*?)(#/.*)?$'),
46     "icourse_cuoc": re.compile(r'\s*https?://www.icourses.cn/web/sword/portal/videoDetail\?courseId=([\w-]*)'), 
47     "icourse_mooc": re.compile(r'\s*((https?://www.icourses.cn/sCourse/course_(\d+).html)|'
48                         r'(https?://www.icourses.cn/web/sword/portal/shareDetails\?cId=(\d+)))')
49 }
50 
51 __all__ = [
52     "__QQgroup__", "__email__", "PATH", "winre", "TIMEOUT", "PLAYLIST", "PALYBACK", 
53     "BATNAME", "BATSTRING", "LENGTH", "WIN_LENGTH", 
54 
55     "download_speed", "aria2_path", "aira2_cmd", "courses_re", "alipay_path"
56 ]

把上面的代码全部复制,直接替换掉原来的Mooc_Config.py文件就OK了。

总结一下:软件爬虫部分的代码是没有失效的,主要是由于icourse163网站调整,header可能失效,因此每次只要重新更换header就行啦。

 

破解别人的软件是不对的,但是作者这种在开源社区发收费软件的行为也是不对的,所以就没有心理负担咯

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄