嘉兴考试培训网智慧学习小助手
普通版
import requests
import bs4
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
while True:
username = input('请输入您的账号:')
password = input('请输入您的密码:')
url='http://m.jxkp.net/User/LoginCheck'
data={
'Uname': username,
'Password': password,
}
login=requests.post(url,headers=headers,data=data)
cookies=login.cookies
if len(str(cookies)) > 100:
break
else:
print('账号或密码错误')
while True:
number_list = input('请输入课程名:')
url = 'http://m.jxkp.net/Zy/Kcs'
res = requests.get(url,headers=headers)
soup = bs4.BeautifulSoup(res.text,'html.parser')
items = soup.find_all(class_='kc-item-wraplink')
flag = False
for item in items:
alt = item.find('img')['alt']
if alt == number_list:
flag = True
href = 'http://m.jxkp.net' + item['href']
res = requests.get(href,headers=headers)
soup = bs4.BeautifulSoup(res.text,'html.parser')
items = soup.find_all(class_='kj-link')
course_number = []
for i in items:
course_number.append(i['href'][-3:])
break
else:
print('没有找到该课程,请重新输入课程名')
if flag:
break
count = 1
for j in course_number:
for i in range(60,2401,60):
url_2='http://m.jxkp.net/Person/UpdateKjLog'
data = {
't':str(i),
'kjid':str(j),
}
res=requests.post(url_2,cookies=cookies,headers=headers,data=data)
print(f'正在刷第{count}个视频,',i//60%483*'>',f'进度{round(i/2400*100,2)}%',end='\r')
count += 1
print()
极速版
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEdit,QMessageBox,QLineEdit,QLabel
import requests
import bs4
from PySide6.QtCore import QThread, Signal, Slot, Qt
import sys
import time
from PySide6.QtGui import QIcon
class WorkerThread(QThread):
result_ready = Signal(str)
def __init__(self, course_number, cookies):
super().__init__()
self.course_number = course_number
self.cookies = cookies
def run(self):
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
url_2='http://m.jxkp.net/Person/UpdateKjLog'
count = 1
for j in self.course_number:
progress_bar_count = 0
for i in range(60,660,60):
data = {
't':str(i),
'kjid':str(j),
}
try:
requests.post(url_2,cookies=self.cookies,headers=headers,data=data)
progress_bar = '>' * int(progress_bar_count)
text = f'智慧小助手正在帮您学习第{count}个视频,{progress_bar},进度{round(i/600*100,2)}%'
self.result_ready.emit(text)
progress_bar_count += 1
except:
print('发生错误,跳过')
count += 1
text = '智慧小助手已经帮您学习了所有课时,好用的话给个好评吧'
self.result_ready.emit(text)
class Stats(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.window = QMainWindow()
self.window.resize(500, 400)
self.window.move(300, 300)
self.window.setWindowTitle('嘉兴考试培训网智慧小助手')
self.author = QLabel(self.window)
self.author.setText('作者:别问太多')
self.author.move(self.window.width() - self.author.width() - 10,
self.window.height() - self.author.height() - 10)
self.username = QLineEdit(self.window)
self.username.setPlaceholderText("请输入用户名")
self.username.move(10, 25)
self.username.resize(200,30)
self.password = QLineEdit(self.window)
self.password.setPlaceholderText("请输入密码")
self.password.setEchoMode(QLineEdit.Password)
self.password.move(10, 60)
self.password.resize(200,30)
self.course_name = QLineEdit(self.window)
self.course_name.setPlaceholderText("请输入课程名")
self.course_name.move(10, 100)
self.course_name.resize(200,30)
self.button = QPushButton('启动', self.window)
self.button.move(380, 80)
self.button.clicked.connect(self.handleCalc)
self.textEdit = QPlainTextEdit(self.window)
self.textEdit.setPlaceholderText("程序尚未启动")
self.textEdit.move(10,150)
self.textEdit.resize(400,200)
self.textEdit.setEnabled(False)
def checkServe(self):
url = 'https://note.xiaolily.cn/%E5%98%89%E5%85%B4%E5%88%B7%E8%AF%BE%E6%97%B6.php'
res = requests.get(url)
if res.text == '1':
return True
else:
QMessageBox.about(self.window,'提示','作者将软件停用了')
return False
def checkPassword(self):
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
username = self.username.text()
password = self.password.text()
url='http://m.jxkp.net/User/LoginCheck'
data={
'Uname': username,
'Password': password,
}
login=requests.post(url,headers=headers,data=data)
self.cookies=login.cookies
if len(str(self.cookies)) > 100:
return True
else:
QMessageBox.about(self.window,'提示','账号或密码错误,请重新输入')
return False
def checkCourse(self):
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
course_name = self.course_name.text()
url = 'http://m.jxkp.net/Zy/Kcs'
res = requests.get(url,headers=headers)
soup = bs4.BeautifulSoup(res.text,'html.parser')
items = soup.find_all(class_='kc-item-wraplink')
flag = False
for item in items:
alt = item.find('img')['alt']
if alt == course_name:
flag = True
href = 'http://m.jxkp.net' + item['href']
res = requests.get(href,headers=headers)
soup = bs4.BeautifulSoup(res.text,'html.parser')
items = soup.find_all(class_='kj-link')
self.course_number = []
for i in items:
self.course_number.append(i['href'][-3:])
break
else:
QMessageBox.about(self.window,'提示','找不到该课程名,请重新输入')
return False
if flag:
return True
def studyVideo(self):
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
url_2='http://m.jxkp.net/Person/UpdateKjLog'
count = 1
for j in self.course_number:
for i in range(60,2401,60):
data = {
't':str(i),
'kjid':str(j),
}
requests.post(url_2,cookies=self.cookies,headers=headers,data=data)
text = f'智慧小助手正在帮您学习第{count}个视频'
self.textEdit.setPlainText(text)
break
count += 1
print()
def handleCalc(self):
if self.checkServe() == False:
return False
if self.checkPassword() == False:
return False
if self.checkCourse() == False:
return False
self.start_single_task()
def start_single_task(self):
self.worker_thread = WorkerThread(self.course_number, self.cookies)
self.worker_thread.result_ready.connect(self.on_result_ready)
self.worker_thread.start()
@Slot(str)
def on_result_ready(self, result):
self.textEdit.setPlainText(result)
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setWindowIcon(QIcon('favicon.ico'))
stats = Stats()
stats.window.show()
sys.exit(app.exec())
嘉兴考试培训网智慧考试小助手
1.2
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time
import requests
import warnings
def checkServer():
while True:
password = input('请输入使用使用码(如果没有请联系作者领取):')
url = 'https://xiaolily.cn/jx_exam.php'
params = {
'password':password
}
res = requests.get(url,params=params,verify=False)
if res.text == '1':
return password
else:
print(res.text)
continue
def jx_exam_use(password):
url = 'https://xiaolily.cn/jx_exam_use.php'
params = {
'password':password
}
res = requests.get(url,params=params,verify=False)
if res.text == '1':
print('使用码已核销,感谢您的使用')
def AI_answer(content):
content = content + '(请使用中文回答)'
url = "http://xiaolily.tpddns.cn:5678/AI_my_chat.php"
params = {
'user_input': content,
'password':'zhaoguodong'
}
res = requests.get(url,params=params)
res_json = res.json()
answer = res_json['message']['content']
return answer
def get_current_window(driver):
all_window_handles = driver.window_handles
current_window_handle = driver.current_window_handle
new_window_handle = None
for handle in all_window_handles:
if handle != current_window_handle:
new_window_handle = handle
break
if new_window_handle:
driver.switch_to.window(new_window_handle)
else:
print("无法打开句柄")
def to_html_entities(text):
for char in text:
unicode_code = ord(char)
hex_code = "{:04x}".format(unicode_code)
html_entity = "&#x{};".format(hex_code)
yield html_entity
def main():
chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=chrome_options)
warnings.filterwarnings("ignore")
password = checkServer()
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
while True:
username_input = input('请输入账号:')
password_input = input('请输入密码:')
url='http://m.jxkp.net/User/LoginCheck'
data={
'Uname': username_input,
'Password': password_input,
}
login=requests.post(url,headers=headers,data=data)
cookies=login.cookies
if len(str(cookies)) > 100:
break
else:
print('账号或密码错误')
print('正在尝试登录平台,请稍等,大概需要15秒')
driver.get('http://m.jxkp.net/User/Login?ReturnUrl=%2FUser')
username = driver.find_element(By.ID,'Uname')
username.send_keys(username_input)
username = driver.find_element(By.ID,'Password')
username.send_keys(password_input)
login_button = driver.find_element(By.CLASS_NAME,'button')
login_button.click()
print('已成功登录平台')
time.sleep(3)
flag = False
while True:
course_name = input('请输入课程名(例如全面解读数字经济):')
driver.get('http://m.jxkp.net/Person/ExamList')
tag_elements = driver.find_elements(By.CLASS_NAME,'kc-list-row')
for element in tag_elements:
if course_name in element.text:
exam_button = element.find_element(By.LINK_TEXT,'参加考试')
exam_button.click()
flag = True
break
if flag == True:
break
else:
print('找不到参加考试按钮,可能原因')
print('1、没有这门课程')
print('2、课时没刷完不能考试')
print('3、已经达到了最大考试次数')
print('请重新输入课程名或者退出程序')
print('已成功进入考试页面,小助手即将开始作答')
time.sleep(3)
try:
timu_list = driver.find_elements(By.CLASS_NAME,'q-title')
except:
print('本门课已经考过试了,不能再次考试')
input('按回车退出')
return
ans_list = driver.find_elements(By.CLASS_NAME,'ans')
ans_list_text = []
ans_group = ''
input_type_list = ['单选题:']
for ans in ans_list:
input_type = ans.find_element(By.TAG_NAME,'input').get_attribute('type')
if input_type == 'radio':
input_type = '单选题:'
else:
input_type = '多选题:'
if ans_group != '' and 'A' in ans.text:
ans_list_text.append(ans_group)
ans_group = ''
input_type_list.append(input_type)
ans_group += ans.text
else:
ans_group += ans.text
for timu,ans,input_type in zip(timu_list,ans_list_text,input_type_list):
timu_and_ans = input_type + timu.text + ans
answer = AI_answer(timu_and_ans)
print(timu.text)
print(answer)
print(password)
jx_exam_use(password)
input('按下回车退出程序:')
main()
校验使用码
<?php
include_once 'conn.php';
$fixedRandomStrings = [
"5w6n", "3h2q", "7t8p", "d4r3", "g9s2", "a1z8", "e5u7", "k6o9", "f2d1", "h7c4",
"p0e3", "j8s5", "n4v7", "r1t8", "s0d9", "c5b2", "l6h3", "q3f0", "t7g4", "u2j1",
"w8k5", "y9n6", "z4p7", "0e7s", "1f8t", "2g9u", "3h0v", "4i1w", "5j2x", "6k3y",
"7l4z", "8m5a", "9n6b", "ao7c", "bp8d", "cq9e", "dr0f", "es1g", "ft2h", "gu3i",
"hv4j", "iw5k", "jx6l", "ky7m", "lz8n", "ma9o", "nb0p", "oc1q", "pd2r", "qe3s",
"rf4t", "sg5u", "th6v", "ui7w", "vj8x", "wk9y", "xl0z", "ym1a", "zn2b", "ao3c",
"bp4d", "cq5e"
];
$password = $_GET['password'];
if (in_array($password, $fixedRandomStrings)) {
$sql = "select * from jx_exam where `password` = '$password'";
$result = mysqli_query($conn,$sql);
$num = mysqli_num_rows($result);
if($num){
echo "邀请码已经被用过了";
exit();
}else{
echo '1';
exit();
}
} else {
echo "邀请码错误";
exit;
}
?>
核销使用码
<?php
include_once 'conn.php';
$password = $_GET['password'];
$sql = "insert into jx_exam(`password`) values ('$password')";
$result = mysqli_query($conn,$sql);
if($result){
echo "1";
exit();
} else{
echo "0";
exit();
}
?>