四川大学校园网自动登录

所需要的依赖

pip install requests
pip install apscheduler

脚本

import requests,re
# 获取url的query参数
from urllib.parse import urlparse
# url编码
from urllib.parse import quote
# 定时任务
from apscheduler.schedulers.blocking import BlockingScheduler

from datetime import datetime

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
}

base_url = 'http://192.168.2.135'
login_url = base_url + '/eportal/InterFace.do?method=login'

params_url_comp = re.compile("href='(.*?)'")

class Spider:
    redirect_url_query = ''
		# service的取值:
    # 校园网:internet
    # 联通:联通出口
    # 移动:移动出口
    def __init__(self,username,password,service='电信出口'):
        self.sess = requests.session()
        self.service = quote(service)
        self.username = username
        self.password = password

    def run(self):
        res = self.get_home()
        if self.is_login(res):
            return
        self.login()


    def get_home(self):
        res = self.sess.get(base_url,headers=headers)
        return res

    def is_login(self,res):
        if res.url == 'http://123.123.123.123/':
            # 获取重定向的url
            redirect_url =  params_url_comp.findall(res.text)[0]
            # 获取重定向的参数
            self.redirect_url_query = urlparse(redirect_url).query
            if self.redirect_url_query  == '':
                print('is login')
                return True
            print('get login query string:',self.redirect_url_query)
            return False
        else:
            print('is login')
            return True

    def login(self):
        login_post_data = {
            "userId": self.username,
            "password": self.password,
            "service": self.service,
            "queryString": self.redirect_url_query,
            "operatorPwd": "",
            "operatorUserId": "",
            "validcode": "",
            "passwordEncrypt": "false"
        }

        res = self.sess.post(login_url,login_post_data)
        print('login success')


username=''
password=''
# 定时任务
def login_job():
    now = datetime.now()
    ts = now.strftime("%Y-%m-%d %H:%M:%S")
    # 此处输入账号和密码
    Spider(username= username,password=password).run()
    print(ts + ':')

# 创建调度器BlockingScheduler()
scheduler = BlockingScheduler()
# 定时执行,五分钟执行一次
scheduler.add_job(login_job, 'interval', seconds=60*5, id='login_job')
# 启动定时任务
scheduler.start()
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值