利用Python requests库模拟登陆学校教务系统

本文介绍了使用Python的requests库模拟登陆学校教务系统的过程,通过session自动保存cookie来访问登录后的页面。虽然代码实现简单,但在判断登陆状态上遇到挑战,如错误的账号密码也会返回200状态码,且服务器故障时仍可能误判为登陆成功。作者计划后续改进判断方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在研究了一会requests库的实现之后。发现requests的确非常强大。。

几行代码就登陆上了学校的教务系统,但也许是我们学校的教务系统做的太烂了吧23333.动不动就血崩。

下面是代码。

import requests
import re
import urllib.request
import os
while True:
 name=input('请输入您的学号')
 password=input('请输入您的密码')
 Target='http://wlkt.nuist.edu.cn/(S(i5jngs45zajbn045hncdug55))/default.aspx'
 data={'__VIEWSTATE':'/wEPDwUKMTM5MjUxOTk4Nw9kFgJmD2QWHgICDxAPFgIeB1Zpc2libGVoZGQWAWZkAgMPEA8WAh8AaGRkZGQCBA8QDxYCHwBoZGRkZAIFDxAPFgIeBFRleHQFCeaVmeWKoeWkhGRkZGQCBg8QDxYCHwBoZGRkZAIHDxAPFgIfAQUG5a2m6ZmiZGRkZAIIDxAPFgIfAQUG5a2m5YqeZGRkZAIJDxAPFgIfAGhkZGRkAgoPEA8WAh8BBQbmlZnluIhkZGRkAgsPEA8WAh8BBQblrabnlJ9kZGRkAgwPEA8WAh8AaGRkZGQCDQ8QDxYCHwBoZGRkZAIODxAPFgIfAGhkZGRkAg8PEA8WAh8AaGRkZGQCEA8QDxYCHwBoZGRkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WCQUMUmFkaW9CdXR0b240BQxSYWRpb0J1dHRvbjQFDFJhZGlvQnV0dG9uMgUMUmFkaW9CdXR0b24yBQxSYWRpb0J1dHRvbjUFDFJhZGlvQnV0dG9uNQUMUmFkaW9CdXR0b24xBQxSYWRpb0J1dHRvbjEFDFJhZGlvQnV0dG9uM8hkENze68v6MFI9hwYr
### 正方教务系统抢课自动化脚本开发教程 #### 使用 Python 和 Selenium 实现自动化的基础准备 对于希望利用 Python 和 Selenium 来创建针对正方教务系统的抢课自动化脚本而言,准备工作至关重要。这不仅涉及安装必要的文件,还需要理解如何通过 WebDriver 控制浏览器行为以及处理网页上的各种交互事件[^1]。 ```python from selenium import webdriver import time ``` 这段简单的代码片段展示了启动 Chrome 浏览器并等待其加载完成的过程。`webdriver.Chrome()` 方法会返回一个指向新打开的 Chrome 浏览器实例的对象;而 `time.sleep(3)` 则让程序暂停三秒钟以便页面完全加载完毕再继续执行后续命令[^4]。 #### 模拟登录过程 在实际编写抢课脚本之前,模拟登录是一个必不可少的部分。由于大多数在线服务都会采取措施防止机器人访问,因此开发者可能需要解决诸如验证码验证等问题。一种解决方案是借助第三方打码服务平台来绕过这一障碍[^2]。 ```python driver.get('http://example.com/login') # 替换为目标网站的实际地址 username_input = driver.find_element_by_name('username') password_input = driver.find_element_by_name('password') # 输入用户名密码 username_input.send_keys('your_username') password_input.send_keys('your_password') captcha_image_url = 'data:image/png;base64,' + captcha_base64_string response = requests.post('http://third-party-captcha-service', data={'image': captcha_image_url}) captcha_text = response.json()['result'] # 将获取到的结果填入表单相应位置 captcha_field = driver.find_element_by_id('captcha') captcha_field.send_keys(captcha_text) login_button.click() ``` 上述代码说明了如何找到 HTML 文档中的特定输入框,并向其中发送预设好的字符串作为用户凭证的一部分。同时,这里还包含了调用外部 API 处理图像型验证码的例子。 #### 定位课程列表与提交请求 一旦成功登陆至目标站点内部,则可以通过分析页面结构进一步精确定位所需操作的目标元素——即待选修的具体科目链接或按钮。通常情况下,这些对象可通过 XPath 或 CSS Selector 进行高效选取: ```python course_selection_buttons = driver.find_elements_by_css_selector('.select-course-button-classname') for button in course_selection_buttons[:number_of_courses_to_select]: try: button.click() confirm_selection_popup = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, '.confirm-selection-popup')) ) confirm_selection_popup.submit() # 假设有确认弹窗需点击确认 print(f'Successfully selected {button.text}') except Exception as e: print(f'Failed to select {button.text}: ', str(e)) ``` 此部分代码实现了遍历所有可选项并将它们逐一加入购物车的功能。注意,在某些场景下可能会遇到额外的安全机制(比如二次确认对话框),此时应适当调整策略以适应具体环境需求[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值