嘉兴考试培训网智慧学习小助手
普通版
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())
嘉兴考试培训网智慧考试小助手
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import os,time,requests
import logging
import sys
from urllib3.exceptions import InsecureRequestWarning
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
import os
def AI_answer(content):
content = content + '(请使用中文回答)'
url = "https://ps7491619bs.vicp.fun/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 close_current_window(driver, fallback_window=None):
"""安全关闭当前窗口并切换到备用窗口"""
if len(driver.window_handles) <= 1:
print("警告:这是最后一个窗口,跳过关闭")
return
if fallback_window and fallback_window in driver.window_handles:
driver.switch_to.window(fallback_window)
for handle in driver.window_handles:
if handle != fallback_window:
driver.switch_to.window(handle)
driver.close()
driver.switch_to.window(fallback_window)
else:
current = driver.current_window_handle
other_windows = [h for h in driver.window_handles if h != current]
if other_windows:
driver.switch_to.window(other_windows[0])
driver.close()
else:
print("无法关闭:没有其他窗口")
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 setup_logging():
"""配置日志,抑制不必要的警告"""
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
stream=sys.stdout
)
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
return options
def create_chrome_driver():
"""创建Chrome浏览器驱动实例"""
print('初次打开会更新驱动,请等待60秒')
service=ChromeService(ChromeDriverManager().install())
options = setup_logging()
driver = webdriver.Chrome(service=service, options=options)
return driver
def yzm_use():
while True:
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
yzm = input('请输入使用码:')
url = 'https://backend.xiaolily.cn/public/verify_code'
params = {
'code':yzm
}
res = requests.post(url,params=params,verify=False)
res_json = res.json()
if res_json['code'] == 200:
print(res_json['msg'])
break
else:
print(res_json['msg'])
def main():
yzm_use()
while True:
username_input = input('请输入用户名:')
password_input = input('请输入密码:')
course_name = input('请输入课程名:')
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='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('账号或密码错误,请重新输入')
driver = create_chrome_driver()
try:
target_url = "http://m.jxkp.net/User/Login?ReturnUrl=%2FUser"
driver.get(target_url)
time.sleep(2)
try:
jixufangwen = driver.find_element(By.ID,'proceed-button')
jixufangwen.click()
time.sleep(2)
except:
pass
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()
time.sleep(3)
print('已成功登录平台')
flag = False
while True:
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('1、没有这门课程')
print('2、课时没刷完不能考试')
print('3、已经达到了最大考试次数')
driver.quit()
input('请按下回车键退出程序')
print('成功进入考试页面')
time.sleep(3)
element_list = driver.find_elements(By.CLASS_NAME, "ques")
for element in element_list:
values = element.find_elements(By.CSS_SELECTOR, 'input[type="hidden"][name="ques"]')
for value in values:
value_name = 'ans_' + value.get_attribute('value')
title = value.find_element(By.XPATH, "following-sibling::*[1]").text
all_following_siblings = value.find_elements(By.XPATH, "following-sibling::*")
answer_elements = []
for sibling in all_following_siblings:
if sibling.get_attribute("name") == "ques":
break
if "ans" in sibling.get_attribute("class"):
answer_elements.append(sibling)
answers = str([elem.text for elem in answer_elements])
timu = title + answers + ',请只回答我答案(A、B、C、D)'
answer = AI_answer(timu)
print(answer)
xuanxiang_name = element.find_element(By.CSS_SELECTOR, f'input[name="{value_name}"]')
xuanxiang_value = int(xuanxiang_name.get_attribute('value'))
if answer == 'A':
xuanxiang_value = str(xuanxiang_value)
elif answer == 'B':
xuanxiang_value = str(xuanxiang_value + 1)
elif answer == 'C':
xuanxiang_value = str(xuanxiang_value + 2)
else:
xuanxiang_value = str(xuanxiang_value + 3)
try:
xiangxuan = element.find_element(By.CSS_SELECTOR, f'input[value="{xuanxiang_value}"]')
driver.execute_script("arguments[0].scrollIntoView(true);", xiangxuan)
driver.execute_script("window.scrollBy(0, -50);")
time.sleep(0.5)
xiangxuan.click()
except:
print('发生未知错误,跳过')
input("按回车键关闭浏览器...")
except Exception as e:
print(f"发生错误: {e}")
finally:
driver.quit()
if __name__ == "__main__":
main()