Esempio n. 1
0
 def _get_captcha(self, url=URL.jwxt_captcha()):
     r = self.get(url)
     im = Image.open(BytesIO(r.content))
     if url == URL.aolan_captcha():
         return str(AolanCaptcha(im))
     if url == URL.jwxt_captcha():
         return str(ZhengfangCaptcha(im))
Esempio n. 2
0
 def login(self, account, password):
     """
     登录奥兰系统 jwxt.njupt.edu.cn
     :param account: 南邮学号、考生号、身份证号
     :param password: 密码
     :return: {'r': 1, "msg": "登录失败"} 或 {'r': 0, 'msg': '登录成功'}
     """
     captcha_code = AolanCaptcha(self._url2image(
         URL.aolan_captcha())).crack()
     data = {
         "__VIEWSTATE": self._get_viewstate(URL.aolan_login()),
         '__VIEWSTATEGENERATOR': captcha_code,
         'userbh': account,
         'pas2s': hashlib.md5(password.upper().encode('utf8')).hexdigest(),
         "vcode": (URL.aolan_captcha()),
         "cw": "",
         "xzbz": "1",
     }
     return self._login_execute(url=URL.aolan_login(), data=data)
Esempio n. 3
0
手动获取奥兰系统验证码的训练集
"""
import hashlib
import os
import time
from io import BytesIO

import requests
from PIL import Image

from njupt.settings import BASE_DIR
from njupt.urls import URL
from njupt.utils.aolan.aolan_captcha import letters

for i in range(100):
    r = requests.get(URL.aolan_captcha())
    im = Image.open(BytesIO(r.content))
    # 灰度处理
    imgry = im.convert('L')

    # 二值处理
    threshold = 220
    table = []
    for i in range(256):
        if i < threshold:
            table.append(0)
        else:
            table.append(1)
    out = imgry.point(table, '1')
    out.show()
    numbers = input("输入数值")
Esempio n. 4
0
        :param data_type:    提交的数据格式(可能是表单类型,也可能是json格式的字符串)
        :param kwargs:  requests支持的参数,比如可以设置代理参数
        :return: BeautifulSoup对象
        """
        # r = getattr(self, method)(url, json=json, data=data, params=params, **kwargs)
        # if r.ok:
        #     soup = BeautifulSoup(r.text, 'lxml')
        #     return soup
        # else:
        #     raise ConnectionError("检查网络连接")

        try:  # 出现网络连接问题,直接在该处抛出错误
            r = getattr(self, method)(url,
                                      json=json,
                                      data=data,
                                      params=params,
                                      **kwargs)
        except ConnectionError:
            raise ConnectionError("请检查网络连接")
        else:
            if r.ok:  # 状态码小于400为True
                soup = BeautifulSoup(r.text, 'lxml')
                return soup
            else:  # 处理其他状态码
                raise Exception('请确保能够正常访问当前页面: {}'.format(url))


if __name__ == "__main__":
    test_model = Model()
    test_model._get_captcha(URL.aolan_captcha())