吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5565|回复: 1
收起左侧

[会员申请] 申请会员ID:LaureatePoet

[复制链接]
吾爱游客  发表于 2019-8-16 16:46
1、申 请 I D:LaureatePoet
2、个人邮箱:poet@poetyin.com
3、原创技术文章:



某校教务系统选课脚本

from selenium import webdriver
from time import sleep
import random
def Statement():
    print("         关于2018-2019学年第二学期本科生选课选教的通知\n"
          "杜绝恶意抢课行为。学校教学资源可以满足同学们有序、合理的选课需求,学\n"
          "生应当在本专业教学计划前提下量力而行、均衡选课,对利用非法抢课软件恶\n"
          "意抢课、扰乱正常选课秩序的行为,一经查实,学校将强行关闭涉事学生的账\n"
          "号,并依据相关条例予以追责!\n"
          "                                               教务处 2018年12月20日\n\n")

    print("声明:\n"
          "\n"
          "多谢你的支持,本程序只作学习交流使用,仅供个人研究\n"
          "之用,请下载后在24小时内删除,请勿用于商业及非法用\n"
          "途,如由此引起的相关法律法规责任,与Poet无关!\n")
    print("同意此声明请输入Y")
    key = input()
    if key != ('Y' or 'y'):
        print('Byebye~')
        sleep(2)
        exit()

def Rundriver(browser):
    print("此程序是借助python中的selenium,需要的环境/软件/驱动支撑有:Winodws/Linux、Google Chrome、Chromedrive.exe\n")
    print("详细教程请访问:\n"
          "-----------------参考文章-----------------\n"
          "1.官网 http://chromedriver.chromium.org/\n"
          "2.Github关于ChromeDriver的wiki https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver\n"
          "3.如何快速下载、安装和配置chromedriver?  https://jingyan.baidu.com/article/f7ff0bfcdd89ed2e27bb1379.html\n"
          "4.驱动的下载地址: http://chromedriver.storage.googleapis.com/index.html\n"
          "5.提醒一定要浏览器版本与插件版本相对应!\n"
          "!!!6.chromedriver.exe放到chrome的安装目录\n")

    print("请输入chromedriver.exe的路径(与chrome的安装目录一致),例如:\n"
          "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe")
    path = input()
    browser = webdriver.Chrome(path)
    browser.implicitly_wait(30)
    return browser

def login(browser):
    try:
        url = "http://my.hfut.edu.cn/login.portal"
        browser.get(url)
    except:
        pass
    count = 0

    while 1:
        print("尝试登录信息门户")
        while 1:
            try:
                print("输入用户名")
                username = input()
                browser.find_element_by_id("username").send_keys(username)
                print("输入密码(信息门户)")
                password = input()
                browser.find_element_by_id("password").send_keys(password)
                print("输入验证码")
                code = input()
                browser.find_element_by_id("code").send_keys(code)
                break
            except:
                count = count + 1
                print("页面加载失败,刷新重试..." + str(count))
                if browser.current_url == url:
                    try:
                        browser.refresh()
                    except:
                        pass
                else:
                    try:
                        browser.get(url)
                    except:
                        pass
                continue

        try:
            browser.find_element_by_xpath("//*[@id=\"loginForm\"]/table[1]/tbody/tr[3]/td/input[1]").click()
            if browser.find_element_by_xpath("//*[@id=\"pp382\"]/a/span").text=="首页":
                print("登陆成功")
                print('正在进行身份核验>>>')
                break
        except:
            print(browser.find_element_by_xpath("//*[@id=\"loginMsg\"]").text)
            print("登录失败")
            login(browser)

def CheckID(browser,s):
    text1 = browser.find_element_by_xpath("//*[@id=\"pf281\"]/div/div[2]/table/tbody/tr/td[2]/div/ul/li[2]").text
    VIPnum = text1[-10:]
    if s.find(VIPnum) < 0:
        print('身份有误!您没有权限使用此程序')
        sleep(2.66)
        exit()
    print('身份正确,欢迎大使用此程序')
    browser.implicitly_wait(120)

def EnterWeb(browser):
    try:
        url2 = "http://jxglstu.hfut.edu.cn/eams5-student/wiscom-sso/login"
        browser.get(url2)
    except:
        pass
    sleep(2)

    try:
        url2 = "http://jxglstu.hfut.edu.cn/eams5-student/for-std/course-select/"
        browser.get(url2)
    except:
        pass

    try:
        browser.find_element_by_xpath("/html/body/div/div[2]/div/div/div[3]/div/h4/a").click()
    except:
        pass

def CoreFunction(browser):
    try:
        print("请输入关键词   (建议:教学班号,因为这样可以保证下方只出现一个\"选课\"按钮,例如:0500075X--001 )     ")
        classname = input()
        browser.switch_to.window(browser.window_handles[1])
        browser.find_element_by_xpath("//*[@id=\"global_filter\"]").send_keys(classname)
    except:
        print("无法输入内容")
        pass
    print("请输入休眠时间区间(具体指点击“选课”到 弹出对话框出现 的时间)(用空格隔开),例如:1.2 2.6")
    a,b=input().split()
    count = 1
    select = browser.find_element_by_xpath("//*[@id=\"suitable-lessons-table\"]/tbody/tr/td[10]/button")
    #off = browser.find_element_by_xpath("/html/body/div[3]/div/div/div[3]/button")
    browser.execute_script("$(arguments[0]).click()", select)
    sleep(random.uniform(float(a), float(b)))
    message = browser.find_element_by_xpath("/html/body/div[3]/div/div/div[2]/h1").text
    while 1:
        print("第" + str(count) + "次选课:\n\t"+ message)
        if message == "选课成功":
            break
        #browser.execute_script("$(arguments[0]).click()", off)
        count = count + 1
        browser.execute_script("$(arguments[0]).click()", select)
        sleep(random.uniform(float(a), float(b)))
        message = browser.find_element_by_xpath("/html/body/div[3]/div/div/div[2]/h1").text
    print("恭喜你抢到" + classname + '!!!\n\n')
    print("如果还要继续抢其他课,请输入key")
    scanf=input()
    if scanf==('key'):
        EnterWeb(browser)
        CoreFunction(browser)
    else:
        print('祝您抢课愉快,生活幸福,再见!')
        sleep(2.66)
        exit()

def main():
    Statement()
    browser = None
    browser = Rundriver(browser)
    login(browser)
    s = 'Number_1,Number_2,...,Number_N'
    CheckID(browser,s)
    EnterWeb(browser)
    CoreFunction(browser)

main()


功能
  • 自定义“选课”点击区间(random)
  • 身份验证:代码可内置学号库,用户登陆后检测身份是否匹配,无权限使用自动关闭程序。
  • 多用户多任务执行:通过多开程序实现。

缺点(不足、待改进)
  • 本程序主要借助Python中的selenium库,所以需要使用驱动Chromedrive,有一定的软件环境要求(通用性差 可通过Requests)
  • 单线程效率低。
  • 程序简单没有特色。
  • 无更新,作者菜,需要努力学习。



博客地址http://www.poetyin.com/2019/06/15/Xuanke-2019-01-Python-script/
GitHub地址https://github.com/LaureatePoet/Poethfut/blob/master/Xuanke.py


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2019-8-19 17:25
抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表