Pastwill 发表于 2022-3-24 18:44

【Python】学习通自动讨论点赞·全部课程·防检测·官方接口

本帖最后由 Pastwill 于 2022-3-25 09:35 编辑

一.前言

脚本用于学习通课程讨论点赞

如若认为有些用处请给予回复与评分,欢迎指出不足缺点,共同进步。

仅做个人学习使用,严禁用于其他用途。

二.开发环境

windows 10 Python 3.6 x86

三.调用模块

from asyncio.windows_events import NULL
import requests
import json
import time
import os
import re
import random
from lxml import etree


四.代码


from asyncio.windows_events import NULL
import requests
import json
import time
import os
import re
import random
from lxml import etree
import sys
#用户区开始
name=""#用户名,必填
passwd=""#密码,必填
#用户区结束
#全局区开始
okcookie={}#经过验证的cookie
dianzan=[]
headers = {'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 11; M2007J3SC Build/RKQ1.200826.002) (device:M2007J3SC) Language/zh_CN com.chaoxing.mobile/ChaoXingStudy_3_5.1.3_android_phone_613_74 '}#超星app原生ua
#全局区结束
def restart_program():#重启
    python = sys.executable
    os.execl(python, python, * sys.argv)
#第一个函数 实现登录,验证cookie,保存cookie,获取cookie各功能
def login():#使用超星app登录api,测试多次获取没遇到过验证,比较稳定
    print("登录模块启动")
    data = {'uname': name,'code': passwd,'loginType': '1','roleSelect': 'true'}
    r = requests.post('https://passport2-api.chaoxing.com/v11/loginregister', headers=headers, data=data)
    load_cookies = requests.utils.dict_from_cookiejar(r.cookies)
    #转换为字符串保存到文件
    fo = open("cookie.txt", "w")
    fo.write(str(json.dumps(load_cookies)))
    print("cookie保存成功")
    fo.close()
    print("重启程序")
    restart_program()
#第二个函数 实现验证cookie,如果失效便启动再次登录获取新cookie
def cookie_check():
    if os.path.exists("cookie.txt") == True:
      f=open('cookie.txt','r',encoding="utf-8")
      dic = json.loads(f.read())
      response = requests.get('https://mooc1-api.chaoxing.com/mycourse/backclazzdata', headers=headers,cookies=dic)
      if '成功' in response.text:
                return ]
                #get_class()
      else:
            print("cookie好像失效了,启动重新获取")
            login()
    else:
      print("未找到cookie文件呀启动登录")
      login()
def get_active_one():
    print("已经开始获取所有讨论topicId")
    html = etree.HTML(requests.get('http://mooc1-1.chaoxing.com/visit/courses', headers=headers, cookies= okcookie).text)
    cla =html.xpath("/html/body/div/div/div/ul/li/div/h3/a/@href")            
    for i in cla:
      b='https://mooc1-1.chaoxing.com'+str(re.findall(re.compile(r'href="(.*?)" title="讨论">'),requests.get('https://mooc1-1.chaoxing.com'+str(i), headers=headers, cookies= okcookie).text))
      time.sleep(random.randint(120,240))
      if '<li class="sturep"><a href="javascript:;" ' not in requests.get(b, headers=headers, cookies= okcookie).text:
            continue
      #if '<span class="danwei">03-' not in requests.get(b, headers=headers, cookies= okcookie).text:
      #    continue这个可以用来判断是不是新的讨论和这个课程是不是新的课程有需要的可以自行改动
      a =re.findall(re.compile(r'&topicid=(.*?)&'),requests.get(b, headers=headers, cookies= okcookie).text)
      for i in a:
            dianzan.append(i)
      time.sleep(random.randint(120,240))
def dianzanba(topicId):
    data = {'topicId': topicId}
    print(requests.post('https://mooc1.chaoxing.com/bbscircle/addpraise', headers=headers, data=data,cookies= okcookie).text)
if __name__ == '__main__':
    if cookie_check() ==True:
      print("cookie检测成功")
      okcookie=cookie_check()
      uid=cookie_check()
      get_active_one()
      print("开始点赞")
      for i in dianzan:
            time.sleep(random.randint(120,240))
            dianzanba(i)
   

asd55555 发表于 2022-3-24 20:10

直接复制到python上运行?

Pastwill 发表于 2022-3-24 20:20

asd55555 发表于 2022-3-24 20:10
直接复制到python上运行?

是的,装好模块

bqiaofeng 发表于 2022-3-24 21:21

我是小白,好好学习

cmccml 发表于 2022-3-24 21:41

收藏了,感谢大佬!

xgywws 发表于 2022-3-24 22:07

这个有什么用?

Pastwill 发表于 2022-3-25 10:24

xgywws 发表于 2022-3-24 22:07
这个有什么用?

有用的自然有用,没用的有用也没用

XHaiipi 发表于 2022-9-5 21:54

收藏了,感谢大佬!

lingyu0628 发表于 2022-9-23 06:36

cookie好像失效了,启动重新获取
登录模块启动
cookie保存成功
重启程序

Nikke 发表于 2022-10-13 16:28

大佬,这样就运行了吗?
但好像没有效果啊{:1_904:}
页: [1] 2
查看完整版本: 【Python】学习通自动讨论点赞·全部课程·防检测·官方接口