Super new learning pass simulation login non-selenium version

Super new learning pass simulation login non-selenium version

'''
# -*- coding: utf-8 -*-
# @Time         : 2021/1/11 15:59
# @Author       : mint
# @Email        : [email protected]
# @FileName     : ooo
# @Description  :
'''
## 
import base64
import time
import requests
from PIL import Image
from loguru import logger
import os
import copy

class Cahoxing():
    def __init__(self, name, password):
        self.username = name
        self.password = password
        self.session = requests.Session()
        self.base_url = 'http://passport2.chaoxing.com/login?refer=http%3A%2F%2Fi.mooc.chaoxing.com'
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36'
        }

    def code(self, cookies):
        logger.info('获取验证码中')
        url = "http://passport2.chaoxing.com/num/code?{}".format(
            int(time.time() * 1000))
        response = requests.get(url, headers=self.headers, cookies=cookies)
        if response.status_code == 200:
            logger.info('获取验证成功')
            with open(f'{os.getcwd()}/code.jpg', 'wb+') as f:
                f.write(response.content)
                logger.info('验证码保存成功')
            im = Image.open('./code.jpg')
            im.show()
        else:
            logger.info('获取验证码失败')

    def login(self):
        formdata = {}
        username = {'uname': self.username}
        password = {'password': base64.b64encode(
            self.password.encode('utf-8')).decode()}
        otherdata = {
            'refer_0x001': 'http%3A%2F%2Fi.mooc.chaoxing.com',
            'pid': ' -1',
            'pidName': '',
            'fid': '31328',
            'fidName': '',#学校名
            'allowJoin': '0',
            'isCheckNumCode': '1',
            'f': '0',
            'productid': '',
            't': 'true',
        }
        formdata.update(otherdata)
        formdata.update(username)
        formdata.update(password)
        formdata.update({'verCode': ''})
        form_data = copy.deepcopy(formdata)
        print(form_data)
        response = self.session.post(
            self.base_url, data=form_data, headers=self.headers, verify=False)
        cookies = response.cookies
        self.code(cookies)
        logger.info('请手动输入验证码:')
        code = str(input())
        numcode = {'numcode': code}
        formdata.update(numcode)
        form_data = copy.deepcopy(formdata)
        print(form_data)
        response = self.session.post(
            self.base_url, data=form_data, headers=self.headers, verify=False)
        cookies = response.cookies
        response = self.session.get(
            'https://mooc1-1.chaoxing.com/coursedata?classId=15215780&courseId=207578076&type=1&ut=s&enc=f7e07d5f9a79a52852ff700365f1de2c&cpi=40862089&openc=7c31d1deb6c0dbde6cc06f97de786aa6',
            cookies=cookies,
            headers=self.headers)#登陆后的随意·选取的页面打印
        print(response.text)


if __name__ == '__main__':
    username = ''#账号
    passwod = ''#密码
    p = Cahoxing(username, passwod)
    p.login()

result:insert image description here

The verification code must also be entered manually, or you can train the model recognition by yourself.
It is only for learning and exchange.
If you have any questions, please leave a message to discuss

Guess you like

Origin blog.csdn.net/qq_43704986/article/details/112479193