liuyunfz / chaoxing_tool

超星网课助手,拥有 一键完成超星中的任务点/刷取课程学习次数/下载课程资源 等功能。基于python语言
GNU General Public License v3.0
315 stars 58 forks source link

部分任务点状态获取出现403错误 #103

Closed C315703603 closed 1 year ago

C315703603 commented 1 year ago

LN$ }$_V~8T{6X~1Q7O0433 修改完成等时长刷取后程序还是速刷,因为速刷最后是显示处理完了但是没刷上,而且容易触发反爬。 如果想等时长按顺序刷是还需要在哪里设置吗?

liuyunfz commented 1 year ago

应该是可以的呢,就是修改后程序需要重新启动,并不是热加载呢

liuyunfz commented 1 year ago

看到了你发的视频,里面有隐私信息建议还是尽快删除。另外你的设置没错,但是程序的逻辑是读取所有课程的任务点,然后将一个课程的所有视频进行同时的等时长刷取,所以触发了反爬吧。我之后给程序加个全局延时试试

liuyunfz commented 1 year ago

你好,最新的版本已经添加了全局延时请求的功能,您可以再试试是否还会出现这个问题

C315703603 commented 1 year ago

已经大概率不会触发反爬系统了,但是最后读取完课程的所有任务点后会直接显示该课程处理完成,并没有进行等时长的刷取,所有课程都是这样,如图。 D{$L L0RUN9VE}{L0DI5W@J

liuyunfz commented 1 year ago

这是没读取到视频任务点,我迟点再去测试一下

liuyunfz commented 1 year ago

最新的commit已经修复了媒体资源读取,还烦请再测试一下

C315703603 commented 1 year ago

{F1KMU {9{ BE97W({L3BCW V~XI}A@SOK34@UIBXMB6(ML 会出现视频状态获取失败的情况

liuyunfz commented 1 year ago

我这边暂时无法浮现,该问题在https://github.com/liuyunfz/chaoxing_tool/issues/100 也有提及,如果可以的话能否确认一下发生该问题的任务点具体类型或是直接提供最靠近报错信息的,以https://mooc1.chaoxing.com/knowledge/cards? 开头链接的源代码

C315703603 commented 1 year ago

是视频类型的,我后来把测验做完仅剩视频任务点的情况下还是如此,如下是其中一段。 2023-09-06 07:55:46.267 | DEBUG | utils:doGet:33 - Do Get to Url https://mooc1-1.chaoxing.com/ananas/status/f3af4ad6ee96bc5b11a34ea723f44e3f?k=&flag=normal&_dc=1600850935908 2023-09-06 07:55:46.267 | DEBUG | utils:doGet:33 - Do Get to Url https://mooc1.chaoxing.com/mycourse/studentstudyAjax?courseId=235123512&clazzid=78027062&chapterId=705061613&cpi=289979121&verificationcode=&mooc2=1 2023-09-06 07:55:46.911 | DEBUG | utils:doGet:33 - Do Get to Url https://mooc1.chaoxing.com/knowledge/cards?clazzid=78027062&courseid=235123512&knowledgeid=705061613&num=0&ut=s&cpi=289979121&v=20160407-1 2023-09-06 07:55:47.024 | ERROR | utils:doGet:46 - Get Url https://mooc1-1.chaoxing.com/ananas/status/f3af4ad6ee96bc5b11a34ea723f44e3f?k=&flag=normal&_dc=1600850935908 Error Url: https://mooc1-1.chaoxing.com/ananas/status/f3af4ad6ee96bc5b11a34ea723f44e3f?k=&flag=normal&_dc=1600850935908 Method: Get Status: 403 2023-09-06 07:55:47.025 | ERROR | classis.Media.Video:get_status:32 - the JSON object must be str, bytes or bytearray, not NoneType Exception in thread Thread-26 (run_video): Traceback (most recent call last): File "C:\Users\31570\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1009, in _bootstrap_inner self.run() File "C:\Users\31570\AppData\Local\Programs\Python\Python310\lib\threading.py", line 946, in run self._target(*self._args, **self._kwargs) File "C:\Users\31570\Downloads\Compressed\chaoxing_tool-master\functions\set_time\deal_time.py", line 42, in run_video raise RequestException("视频状态获取失败") File "C:\Users\31570\Downloads\Compressed\chaoxing_tool-master\classis\SelfException__init.py", line 18, in init__ self.text = html.text AttributeError: 'str' object has no attribute 'text' Q`X5N8PC) MH7ZTX$W06IM

liuyunfz commented 1 year ago

今天测试时偶然出现了一次,但当我再次重新运行程序后就没有报错了。现在的猜测是因为等时长刷取是启用的线程,可能线程并发导致的cookie冲突问题。不知道你那边再次运行是否是同一个视频任务报错?还是比较随机但是由于数量大导致每次都会报错

C315703603 commented 1 year ago

基本上都是从第一个视频任务点开始就开始报错了,错误类型就和之前发的图一样。

monkey5689 commented 1 year ago

基本上都是从第一个视频任务点开始就开始报错了,错误类型就和之前发的图一样。

我也是从第一个任务点开始就一直403了

liuyunfz commented 1 year ago

你好,最新的版本添加了单线程刷取选项以及线程的随机延迟启动。我这边测试了三次,分别如下:

  1. 使用单线程模式,未出错
  2. 使用多线程模式,第二个任务点报错
  3. 使用随机延迟多线程模式,第一轮任务执行未出现报错

综上,烦请大家帮忙测试一下

monkey5689 commented 1 year ago

你好,最新的版本添加了单线程刷取选项以及线程的随机延迟启动。我这边测试了三次,分别如下:

  1. 使用单线程模式,未出错
  2. 使用多线程模式,第二个任务点报错
  3. 使用随机延迟多线程模式,第一轮任务执行未出现报错

综上,烦请大家帮忙测试一下

随机延迟在哪里设置?

liuyunfz commented 1 year ago

随机延迟默认启动的,如果是多线程

liuyunfz commented 1 year ago

看到近期大家没有继续反馈相关问题,如果已修复将在未来几日关闭本issue。如果仍有类似问题还烦请继续告知