【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)
直接复制到python上运行? asd55555 发表于 2022-3-24 20:10
直接复制到python上运行?
是的,装好模块 我是小白,好好学习 收藏了,感谢大佬! 这个有什么用? xgywws 发表于 2022-3-24 22:07
这个有什么用?
有用的自然有用,没用的有用也没用 收藏了,感谢大佬! cookie好像失效了,启动重新获取
登录模块启动
cookie保存成功
重启程序 大佬,这样就运行了吗?
但好像没有效果啊{:1_904:}
页:
[1]
2